File the permit stack
Required permits per site class, how to attach them to a ComputeSlot, and how the rights engine evaluates the stack.
Required permits per site class
The checkPermitStack rights-engine check enforces a per-site-class permit baseline. Beyond the baseline, additional permits may be required by jurisdiction.
| Site class | Required permits |
|---|---|
gas_associated, gas_stranded_dry | land_use, environmental_impact, air_emissions, gas_extraction |
gas_pipeline | land_use, environmental_impact, air_emissions |
hydro_run_of_river | land_use, environmental_impact, water_draw |
hydro_reservoir | land_use, environmental_impact, water_draw, indigenous_consultation |
wind_onshore, wind_offshore | land_use, environmental_impact |
solar_pv | land_use, environmental_impact |
solar_csp | land_use, environmental_impact, water_draw |
nuclear_smr, nuclear_lwr | land_use, environmental_impact, water_draw, generation_license |
geothermal | land_use, environmental_impact, water_draw |
behind_meter | land_use, data_center_zoning |
ILO-169 ratifying jurisdictions add indigenous_consultation automatically for high-sensitivity site classes (hydro, geothermal, gas) via checkIndigenousConsultation.
Attaching permits
Update the slot's permits array as each permit progresses. Each entry tracks type, status, authority, reference_id, submitted_at, approved_at, expires_at, and conditions[].
curl -X PATCH https://sandbox-api.dmtr.ai/v1/energy/slots/slot-pampa-jv-phase1 \
-H "Authorization: Bearer $DMTR_KEY" \
-H "Content-Type: application/json" \
-d '{
"permits": [
{ "type": "land_use", "status": "issued", "authority": "Municipalidad de Añelo", "reference_id": "LU-2025-AN-0042", "approved_at": "2025-11-01" },
{ "type": "environmental_impact", "status": "submitted", "authority": "Subsecretaría de Ambiente, Neuquén", "reference_id": "EIA-2026-VM-0117", "submitted_at": "2026-01-15" },
{ "type": "air_emissions", "status": "submitted", "authority": "Subsecretaría de Ambiente, Neuquén", "submitted_at": "2026-01-15" },
{ "type": "gas_extraction", "status": "approved", "authority": "ENARGAS", "reference_id": "GE-2026-NQN-0233", "approved_at": "2026-02-20" }
]
}'Permit statuses and what checkPermitStack returns
status value | Effect |
|---|---|
not_started, informal | Treated as missing (counts toward fail / pending) |
submitted | Pending — slot eligible for conditional Verdict, blocked from permit_complete lifecycle status |
approved, issued | Counts toward pass |
denied | Counts as fail — disqualifies the slot |
expired | Counts as fail unless renewed |
A permit with expires_at in the past is treated as expired even if status === "issued". The check accepts an evaluationDate for forward-looking simulations.
Advance the PERMITS gate
Once the required stack reaches issued/approved:
curl -X POST https://sandbox-api.dmtr.ai/v1/energy/slots/slot-pampa-jv-phase1/advance \
-d '{ "gate": "permits", "status": "complete" }'The state machine confirms land and energy are complete first.
Related guides
Register a stranded energy asset as a ComputeSlot
Step-by-step: secure land + fuel rights, register the slot, attach the Compute SPV LLC Position, advance through the LAND gate.
Sign a tolling CapacityContract
Wire a tolling contract — capacity payment, variable payment, dispatch authority, fuel supply chain, force majeure regime, resource adequacy pledge.