{"components":{"schemas":{"BessDispatchRequest":{"properties":{"bess_gw":{"description":"Installed BESS power capacity (GW)","type":"number"},"bess_hours":{"default":4.0,"description":"BESS energy-to-power ratio (hours)","type":"number"},"firm_capacity_gw":{"description":"Firm dispatchable capacity: coal + CCGT + hydro (GW)","type":"number"},"peak_demand_gw":{"description":"Evening peak demand to be covered (GW)","type":"number"},"solar_cf_daytime":{"default":0.85,"description":"Solar capacity factor during daytime charging window","type":"number"},"solar_cf_evening":{"default":0.0,"description":"Solar capacity factor during evening dispatch window","type":"number"},"solar_gw":{"description":"Installed solar capacity (GW)","type":"number"}},"required":["solar_gw","bess_gw","peak_demand_gw","firm_capacity_gw"],"type":"object"},"BessDispatchResult":{"properties":{"bess_charge_gwh":{"description":"Energy stored per day, constrained by BESS capacity (GWh/day)","type":"number"},"curtailment_avoided_pct":{"description":"Annual solar generation absorbed by BESS as % of total solar output","type":"number"},"daytime_surplus_gwh":{"description":"Solar surplus available for BESS charging (GWh/day)","type":"number"},"evening_adequacy_pct":{"description":"(firm + BESS dispatch) / peak demand \u00d7 100; \u2265100 = fully covered","type":"number"},"evening_dispatch_gw":{"description":"Average BESS power into grid during 4-hour evening window (GW)","type":"number"}},"type":"object"},"ScenarioEnvelope":{"description":"Scenario configuration envelope passed to the forecast orchestrator","properties":{"country":{"description":"ISO-2 country code","type":"string"},"horizon":{"description":"Forecast horizon year","type":"integer"},"industry":{"description":"Industry sector slug","type":"string"},"scenario":{"description":"RCP/SSP scenario identifier","type":"string"}},"type":"object"}}},"info":{"contact":{"url":"https://ce.drel.us"},"description":"Integrated climate-economics modelling platform. Provides scenario analysis, physical-risk quantification, damage assessment, fiscal response, and industry transition planning.","title":"Climate Economics Engine","version":"1.0.0"},"openapi":"3.1.0","paths":{"/api/adaptation":{"get":{"operationId":"getAdaptation","parameters":[{"in":"query","name":"country","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Adaptation options"}},"summary":"Adaptation options and costs"}},"/api/bess-dispatch":{"post":{"description":"Models a 4-hour battery energy storage system that charges from daytime solar surplus and dispatches into the evening peak window. Returns dispatch metrics including evening adequacy and curtailment avoided. Does not model round-trip efficiency losses.","operationId":"bessDispatch","requestBody":{"content":{"application/json":{"example":{"bess_gw":3.0,"firm_capacity_gw":18.0,"peak_demand_gw":45.0,"solar_gw":28.5},"schema":{"$ref":"#/components/schemas/BessDispatchRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BessDispatchResult"}}},"description":"BESS dispatch metrics"},"400":{"content":{"application/json":{"schema":{"properties":{"error":{"type":"string"}},"type":"object"}}},"description":"Missing or invalid input fields"}},"summary":"4-hour BESS peak-shift dispatch calculation"}},"/api/catalog":{"get":{"operationId":"getApiCatalog","parameters":[{"description":"Include adapter dataset index in the catalog payload","in":"query","name":"include_datasets","schema":{"default":true,"type":"boolean"}},{"description":"Include SHA256 checksums for adapter datasets","in":"query","name":"include_hashes","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Catalog payload"}},"summary":"Machine-readable API and dataset catalog"}},"/api/damage":{"get":{"operationId":"getDamage","parameters":[{"in":"query","name":"country","schema":{"type":"string"}},{"in":"query","name":"scenario","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Damage estimates"}},"summary":"Climate damage estimates"}},"/api/data-refresh-evidence":{"get":{"operationId":"getDataRefreshEvidence","parameters":[{"description":"summary returns condensed KPIs; operational returns only operational sources; full includes complete source and daily arrays","in":"query","name":"view","schema":{"default":"summary","enum":["summary","operational","full"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Backfill evidence payload"}},"summary":"Historical freshness evidence and operational cadence grade"}},"/api/data-update-schedule":{"get":{"operationId":"getDataUpdateSchedule","parameters":[{"description":"Maximum rows returned","in":"query","name":"limit","schema":{"default":100,"maximum":1000,"minimum":1,"type":"integer"}},{"description":"Rows to skip","in":"query","name":"offset","schema":{"default":0,"minimum":0,"type":"integer"}},{"description":"Sort by field, prefix with '-' for descending","in":"query","name":"sort","schema":{"type":"string"}},{"description":"Substring search","in":"query","name":"q","schema":{"type":"string"}},{"description":"Comma-separated key:value filters","in":"query","name":"filter","schema":{"type":"string"}},{"description":"Comma-separated field projection","in":"query","name":"fields","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Cadence and freshness schedule"}},"summary":"Machine-readable source cadence and freshness schedule"}},"/api/datasets":{"get":{"operationId":"listDatasets","parameters":[{"description":"Include SHA256 checksums for adapter datasets","in":"query","name":"include_hashes","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Dataset index"}},"summary":"List adapter datasets with machine-readable metadata"}},"/api/datasets/{dataset_id}":{"get":{"operationId":"getDataset","parameters":[{"description":"Adapter dataset id, e.g. energy_mix","in":"path","name":"dataset_id","required":true,"schema":{"type":"string"}},{"description":"If true, return the dataset body directly without metadata wrapper","in":"query","name":"raw","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Dataset payload"},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Dataset not found"}},"summary":"Get an adapter dataset payload"}},"/api/datasets/{dataset_id}/schema":{"get":{"operationId":"getDatasetSchema","parameters":[{"description":"Adapter dataset id","in":"path","name":"dataset_id","required":true,"schema":{"type":"string"}},{"description":"Maximum recursion depth for inferred schema","in":"query","name":"max_depth","schema":{"default":4,"maximum":8,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Inferred schema"},"404":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Dataset not found"}},"summary":"Get inferred JSON schema for an adapter dataset"}},"/api/emissions":{"get":{"operationId":"getEmissions","parameters":[{"description":"ISO-2 country code","in":"query","name":"country","schema":{"type":"string"}},{"description":"Sector slug","in":"query","name":"sector","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Emissions data"}},"summary":"Country/sector emissions data"}},"/api/forecast":{"post":{"operationId":"runForecast","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioEnvelope"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Forecast result"}},"summary":"Run an integrated climate-economics forecast"}},"/api/physical-climate":{"get":{"operationId":"getPhysicalClimate","parameters":[{"description":"ISO-2 country code","in":"query","name":"country","schema":{"type":"string"}},{"description":"RCP scenario","in":"query","name":"scenario","schema":{"enum":["rcp26","rcp45","rcp60","rcp85"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Climate projections"}},"summary":"Physical climate projections"}},"/api/scc":{"get":{"operationId":"getSCC","parameters":[{"description":"Discount rate (e.g. 0.03)","in":"query","name":"discount_rate","schema":{"type":"number"}},{"description":"Horizon year (e.g. 2050)","in":"query","name":"horizon","schema":{"type":"integer"}},{"description":"Named preset","in":"query","name":"preset","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"SCC value and breakdown"}},"summary":"Social Cost of Carbon"}},"/api/supply-chain":{"get":{"operationId":"getSupplyChain","parameters":[{"in":"query","name":"sector","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Supply-chain risk data"}},"summary":"Supply-chain climate risk scores"}},"/api/tipping-points":{"get":{"operationId":"getTippingPoints","responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Tipping-point data"}},"summary":"Tipping-point risk matrix"}}},"servers":[{"description":"This server","url":"/"}]}
