Compose a multi-owner pool
End-to-end guide for energy aggregation: DemandSpec -> AllocationPlan -> CapacityPool -> tranches -> waterfall.
The full aggregation DSL:
DemandSpec -> AllocationPlan -> CapacityPool -> PoolTranche -> PoolWaterfallExecution
1) Generate allocation plan
curl -sS -X POST "$DMTR_API/v1/energy/demand/demand-hyperscaler-2027-q2-latam/allocation-plan" \
-H "Authorization: Bearer $DMTR_KEY" \
-H "Content-Type: application/json" \
-d '{
"solver_strategy": "greedy_score",
"max_components": 4,
"tenantOfacScreenedAt": "2026-04-30",
"estimatedProjectValueUsd": 800000000
}'Save the returned plan_id, components[], and aggregate_mw.
2) Create pool from plan
curl -sS -X POST "$DMTR_API/v1/energy/pools" \
-H "Authorization: Bearer $DMTR_KEY" \
-H "Content-Type: application/json" \
-d '{
"pool_id": "pool-latam-2027-001",
"pool_type": "geographically_distributed",
"status": "binding",
"components": [
{
"slot_id": "slot-pampa-jv-phase1",
"position_id": "pos-pampa-jv-phase1",
"owner_participant_id": "joule-frontier-fund-i",
"contributing_mw": 200,
"entry_date": "2027-01-15",
"exit_terms": {
"lock_period_months": 24,
"exit_notice_months": 6,
"exit_penalty_schedule": [{ "months_remaining_min": 12, "penalty_pct": 0.08 }]
}
},
{
"slot_id": "slot-elchocon-phase1",
"position_id": "pos-elchocon-phase1",
"owner_participant_id": "neuquen-hydro-consortium",
"contributing_mw": 300,
"entry_date": "2027-01-15",
"exit_terms": {
"lock_period_months": 24,
"exit_notice_months": 6,
"exit_penalty_schedule": [{ "months_remaining_min": 12, "penalty_pct": 0.08 }]
}
}
],
"aggregate_mw": 500,
"governing_agreement_id": "ga-latam-pool-001",
"waterfall_strategy": "pro_rata_mw",
"availability_aggregation": "strict",
"regulatory_posture": "per_component_passthrough",
"effective_stage_gate": "permits",
"contract_structure": "single_pool_contract"
}'3) Sign pool (issues encumbrances)
curl -sS -X POST "$DMTR_API/v1/energy/pools/pool-latam-2027-001/sign" \
-H "Authorization: Bearer $DMTR_KEY"4) Add tranches
curl -sS -X POST "$DMTR_API/v1/energy/pools/pool-latam-2027-001/tranches" \
-H "Authorization: Bearer $DMTR_KEY" \
-H "Content-Type: application/json" \
-d '{
"tranche_id": "tranche-senior-001",
"seniority": 0,
"notional_mw_share": 350,
"mw_share_pct": 0.7,
"payment_priority_rank": 0,
"default_treatment": "absorb_shortfall_first"
}'curl -sS -X POST "$DMTR_API/v1/energy/pools/pool-latam-2027-001/tranches" \
-H "Authorization: Bearer $DMTR_KEY" \
-H "Content-Type: application/json" \
-d '{
"tranche_id": "tranche-junior-001",
"seniority": 1,
"notional_mw_share": 150,
"mw_share_pct": 0.3,
"payment_priority_rank": 1,
"default_treatment": "absorb_shortfall_first"
}'5) Execute waterfall
curl -sS -X POST "$DMTR_API/v1/energy/pools/pool-latam-2027-001/waterfall" \
-H "Authorization: Bearer $DMTR_KEY" \
-H "Content-Type: application/json" \
-d '{
"period_label": "2027-06",
"available_usd": "1000000"
}'6) Dissolve pool
/dissolve returns 409 if the pool is not executed or if any pool-level contract remains non-terminal.
curl -sS -X POST "$DMTR_API/v1/energy/pools/pool-latam-2027-001/dissolve" \
-H "Authorization: Bearer $DMTR_KEY"Run an RFP as a tenant (DemandSpec → Match → Reserve)
Submit a structured DemandSpec, match against ComputeSlot inventory, evaluate Verdicts, reserve allocations.
Sublease a slot between tenants (4(a)(7) playbook)
Reassign a slot's tenant_assignment from one hyperscaler to another using the same Section 4(a)(7) secondary-transfer mechanics DMTR uses for fund interest re-allocations.