{"openapi":"3.1.0","info":{"title":"Kortex — the world's power system as one queryable graph","description":"\n# Kortex — the world's power system as one queryable graph\n\nKortex connects the world's power system — physical infrastructure, market zones, corporate ownership, water and climate exposure, interconnection queues, and geopolitical context — into a single pre-integrated knowledge graph. The facts are public. The connections are the product.\n\n**No LLM in the stack.** Kortex is deterministic: the same query against the same graph returns the same answer, traceable to named source datasets, and metered responses ship inside a provenance envelope (sources, licences, methodology, confidence, limitations). Where a value is modelled, inferred or heuristic rather than observed, the response says so via a per-metric `evidence_class`.\n\n**Rights modes.** Envelope-bearing endpoints accept `?rights_mode=`: `evaluation` (default — under-review sources contribute and are disclosed), `commercial_safe` (**fails closed** with `409 rights_mode_blocked` and the blocking sources listed if any contributing source is not commercially cleared), `internal_research` (reserved). Frozen answers are retrievable at `GET /v2/receipts/{receipt_id}`. Kortex is a screening and signal-generation layer, **not a forecasting platform** — it does not produce forward price curves, demand forecasts, or scenario models, and is designed to complement forecast-oriented research platforms, not replace them.\n\n## What makes Kortex different\n\nTraditional data vendors sell individual datasets: power plant registries, wholesale prices, ESG scores, or weather data. Analysts must license, clean, and stitch these together manually — a process that typically takes weeks per analysis.\n\nKortex has already done this stitching. The platform connects power plants, substations, transmission lines, grid zones, corporate entities, dams, ports, mineral deposits, and airports — linked by typed edges: ownership chains, grid connections, queue positions, fuel-supply relationships, and competitive dynamics. **Live node, edge, and table counts: `GET /stats`.**\n\n## The whole estate serves — five generic surfaces\n\nBeyond the curated insight endpoints, every servable dataset in the estate is reachable through five registry-driven surfaces that share one rights model (commercial status resolves live per source; a multi-source product takes its most restrictive input; rights-excluded data is catalogued but returns `403 rights_hold`):\n\n- `GET /v2/tables` — the governed catalogue: every servable table with all columns retrievable, per-table source, licence and live status\n- `GET /v2/series` + `/v2/series/{key}` — time-series datasets: policy rates, FX, carbon, commodities, FRED, Ember, EIA demand, ENTSO-E load, Climate TRACE emissions, Comtrade flows\n- `GET /v2/indicators` + `/v2/countries/{iso3}` — country-grain indicators and full country profiles (HDI, V-Dem, complexity, IMF forecasts, risk composites)\n- `GET /v2/assets/{id}/profile` — per-asset risk & context: compound hazard, wildfire/storm/seismic, water stress, drought, carbon-pricing exposure, stranding flags, catchment economics\n- `GET /v2/entities/{lei}/profile` — corporate profiles by LEI: GLEIF identity and parent chain, attributed fleet revenue, ICIJ offshore matches, sanctions-screen flags, divestiture watch\n\nThe estate refreshes continuously (fire detections 6-hourly, market prices 4-hourly, EIA demand 2-hourly, FX/carbon daily, GLEIF daily-to-monthly) and the source register re-audits itself weekly.\n\n## Example compound questions\n\nEach of these is a single query here and weeks of manual dataset-joining anywhere else. Results return ranked rows with the provenance envelope attached; a frozen, independently reproducible example is published at [/receipt](https://kortex.orkora.com/receipt).\n\n- **\"Which utilities show the lowest interconnection-queue completion while earning the most from fossil plants in the same grid zones?\"** — queue completion × generator revenue × corporate ownership × grid topology.\n\n- **\"How much generation revenue is exposed to high water stress in a country's thermal fleet?\"** — generator locations × water-stress indices × wholesale prices × capacity factors.\n\n- **\"Which operators earn the bulk of their consolidated revenue from fossil generation?\"** — generator fuel type × revenue model × LEI-resolved corporate hierarchy.\n\n- **\"Where can a large new load actually connect — cheap clean power, grid headroom, uncongested queues, low water stress?\"** — wholesale prices × fuel mix × queue pipeline × transmission capacity × hydrology.\n\n## Who uses Kortex\n\n| User | Use case |\n|---|---|\n| **Hyperscalers / large-load developers** | Data centre and load siting, PPA counterparty assessment |\n| **Infrastructure funds & lenders** | Pre-diligence: asset → operator → ultimate owner, stranded-asset and counterparty screening |\n| **TSOs / grid operators** | Queue pressure analysis, cross-border context, asset-ownership resolution |\n| **Development banks** | Electrification gap analysis, project siting, sovereign risk context |\n| **Insurers / reinsurers** | Compound hazard exposure, climate-infrastructure risk |\n| **Energy developers** | Competitive landscape, interconnection strategy |\n\n## Data architecture\n\nThe API exposes four layers:\n\n- **Graph Layer** — Memgraph-backed traversals across the full node and edge taxonomy (live counts: GET /stats). Query corporate ownership chains, grid topology, competitive dynamics, and supply relationships.\n- **Insights Layer** — Pre-computed cross-domain intelligence: stranded assets, fossil_revenue_exposure detection, queue blockage analysis, compound vulnerability screening, weather-correlated portfolio risk. Every insight response ships inside a **provenance envelope** — `provenance.as_of` (snapshot time), `sources` (with licence and refresh cadence), `methodology`, `methodology_version`, `confidence` and `limitations` — so a result can be cited, audited or challenged without a follow-up call. The receipt itself is never billed.\n- **Time Series Layer** — billions of rows of electricity prices, generation dispatch, demand profiles, vessel positions, and economic indicators via TimescaleDB.\n- **Reference Layer** — Country crosswalks (791 aliases), fuel taxonomies, grid zone metadata, and the complete platform data register.\n\n## Coverage\n\nLive per-label counts for every domain: GET /v2/stats/labels. The full source register with licences and refresh cadences: [/sources](https://kortex.orkora.com/sources).\n\n- **Energy**: generators, substations, transmission line segments, grid zones, interconnection queues and dams\n- **Corporate**: GLEIF legal entities graph-wide, SEC-listed companies, LEI-resolved operator groups with ownership chains\n- **Climate**: fire hotspots (FIRMS), nighttime lights (VIIRS), water stress (Aqueduct), emissions (Climate TRACE)\n- **Geopolitical**: conflict events (UCDP), governance scores (V-Dem, WGI), sanctions screening leads, trade flows (Comtrade)\n- **Economic**: GDP grids (Kummu), wealth index (Meta RWI), commodity prices, FX rates, sovereign ratings\n- **Nuclear**: power reactors (IAEA PRIS), uranium deposits (UDEPO), fuel cycle facilities (NFCIS)\n- **Digital**: Internet exchange points, peering facilities, submarine cables, telecom infrastructure\n- **Maritime**: vessel positions (AIS), ports, cable-laying fleet\n\n## Data freshness\n\nReal-time (5-min): AIS vessel positions, ADS-B aircraft, USGS seismic events\nHourly: Electricity prices (6 US ISOs + AEMO + Nord Pool), EIA demand/generation\nDaily: ENTSO-E prices/generation/flows, FIRMS fire hotspots, FX rates\nWeekly: OpenSanctions, FRED economic indicators, Ember energy statistics\nMonthly: Climate TRACE emissions, VIIRS nighttime lights, GRACE-FO water storage\n\n\n**Contracts for machines.** Errors follow one envelope with stable codes — the developed catalogue (code, meaning, resolving action) is at `GET /v2/errors`. Billing settles on max(category floor, delivered-output value) at published field weights on every channel (REST and MCP alike), with a hard 402 gate before payload delivery and a free cost preview via the MCP tool `kortex_cost_preview`. Agents: MCP server at `POST /v2/mcp` (14 tools over the full platform, cost on every result, receipts on envelope-bearing answers), manifest at `/.well-known/kortex.json`, map at `/llms.txt`.\n","contact":{"name":"Orkora Ltd","url":"https://orkora.com/","email":"kortex@orkora.com"},"license":{"name":"Commercial — API access by agreement"},"version":"2.0.0"},"paths":{"/v2/insights/stranded-assets":{"get":{"tags":["Insights"],"summary":"Stranded Assets","description":"Generators at risk of stranding — retirement + water + carbon + queue convergence.","operationId":"stranded_assets_v2_insights_stranded_assets_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"max_retirement_year","in":"query","required":false,"schema":{"type":"integer","description":"Maximum retirement year","default":2030,"title":"Max Retirement Year"},"description":"Maximum retirement year"},{"name":"min_revenue_m","in":"query","required":false,"schema":{"type":"number","description":"Minimum revenue in $M","default":50,"title":"Min Revenue M"},"description":"Minimum revenue in $M"},{"name":"min_water_stress","in":"query","required":false,"schema":{"type":"number","description":"Minimum water stress (0-5)","default":0,"title":"Min Water Stress"},"description":"Minimum water stress (0-5)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"provenance":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"refresh":{"type":"string"},"homepage":{"type":"string"}},"additionalProperties":true}},"methodology":{"type":"string"},"methodology_version":{"type":"string"},"confidence":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"source_register":{"type":"string"},"receipt":{"type":"object","properties":{"receipt_id":{"type":"string"},"computed_at":{"type":"string"},"graph_snapshot_id":{"type":"string"},"response_sha256":{"type":"string"},"software_build":{"type":"string"},"retrieve":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"count":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fuel":{"type":"string"},"mw":{"type":"integer"},"revenue":{"type":"integer"},"retirement":{"type":"integer"},"water_stress":{"type":"number"},"carbon_price":{"nullable":true},"operator":{"type":"string"},"grid_id":{"type":"string"},"grid_revenue_bn":{"type":"number"}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/insights/weather-risk":{"get":{"tags":["Insights"],"summary":"Weather Risk","description":"Corporate groups with weather-correlated renewable portfolios (measured).","operationId":"weather_risk_v2_insights_weather_risk_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"fuel","in":"query","required":false,"schema":{"type":"string","description":"Fuel type: Wind or Solar","default":"Wind","title":"Fuel"},"description":"Fuel type: Wind or Solar"},{"name":"min_r","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.5,"description":"Minimum measured anomaly correlation (edges exist at r >= 0.5)","default":0.5,"title":"Min R"},"description":"Minimum measured anomaly correlation (edges exist at r >= 0.5)"},{"name":"min_correlated_mw","in":"query","required":false,"schema":{"type":"number","description":"Minimum correlated MW","default":100000,"title":"Min Correlated Mw"},"description":"Minimum correlated MW"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"provenance":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"refresh":{"type":"string"},"homepage":{"type":"string"}},"additionalProperties":true}},"methodology":{"type":"string"},"methodology_version":{"type":"string"},"confidence":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"source_register":{"type":"string"},"receipt":{"type":"object","properties":{"receipt_id":{"type":"string"},"computed_at":{"type":"string"},"graph_snapshot_id":{"type":"string"},"response_sha256":{"type":"string"},"software_build":{"type":"string"},"retrieve":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"count":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"operator":{"type":"string"},"correlated_pairs":{"type":"integer"},"correlated_mw":{"type":"integer"},"zones":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/insights/fossil-revenue-exposure":{"get":{"tags":["Insights"],"summary":"Fossil Revenue Exposure","description":"Operators with mixed fossil/clean portfolios — fossil revenue vs clean revenue.\n\nUses Generator.resolved_group_canonical as the operator anchor (4 of 7 insight\nendpoints). Coverage: the subset of generators carrying resolved_group + revenue\n(high-fidelity universe; live label counts at GET /v2/stats/labels).\nOperators outside this universe will not appear, by design — high fidelity over\nbad coverage.","operationId":"fossil_revenue_exposure_v2_insights_fossil_revenue_exposure_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"min_revenue_m","in":"query","required":false,"schema":{"type":"number","description":"Minimum total revenue $M","default":500,"title":"Min Revenue M"},"description":"Minimum total revenue $M"},{"name":"include_unverified","in":"query","required":false,"schema":{"type":"boolean","description":"By default, rows whose operator-to-entity stitch is 'unverified' have their identity fields WITHHELD (resolution_status=abstained_low_confidence) — abstention over a weak identity assertion. Set true to receive the low-confidence identity claims with their warnings.","default":false,"title":"Include Unverified"},"description":"By default, rows whose operator-to-entity stitch is 'unverified' have their identity fields WITHHELD (resolution_status=abstained_low_confidence) — abstention over a weak identity assertion. Set true to receive the low-confidence identity claims with their warnings."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FossilExposureResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/insights/corridor-sensitivity":{"get":{"tags":["Insights"],"summary":"Corridor Sensitivity","description":"Which borders physically carry a zone-to-zone exchange (calibrated\nDC power-flow model, CWE+). MODELLED evidence class — the first on the\nplatform: a DC power flow on the open PyPSA-Eur OSM network (ODbL),\nwith each border's sensitivity scaled by a calibration chosen\nOUT-OF-SAMPLE against observed 2025 physical flows (median calibrated\nr +0.88, sign agreement 92%). Screening-grade: which corridors deserve\nattention — never an injection study, never a capacity allocation, no\nintra-zonal claims. Loop flows are the point: ~half a DE->FR exchange\ntakes the direct border; the rest travels via CH, NL/BE and AT.","operationId":"corridor_sensitivity_v2_insights_corridor_sensitivity_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","description":"Injecting zone (DE FR BE NL LU AT CH CZ PL)","title":"From"},"description":"Injecting zone (DE FR BE NL LU AT CH CZ PL)"},{"name":"to","in":"query","required":true,"schema":{"type":"string","description":"Receiving zone","title":"To"},"description":"Receiving zone"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorridorSensitivityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/insights/congestion-corridor":{"get":{"tags":["Insights"],"summary":"Congestion Corridor","description":"The corridors grid operators pay to relieve, hour by hour: modelled\ntransfer across Germany's 51.2N cut and Britain's B6 boundary for\nevery hour of 2025 (base-case DC flows on the PyPSA-Eur OSM network).\nMODELLED evidence class, corridor grain ONLY — the one grain of the\ncongestion layer that survived validation against observed congestion\nspending in BOTH grids (German redispatch, GB Balancing Mechanism\nSO-flagged actions). No branch, overload or N-1 claims are served at\nany grain.","operationId":"congestion_corridor_v2_insights_congestion_corridor_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CongestionCorridorResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/insights/water-death-spiral":{"get":{"tags":["Insights"],"summary":"Water Death Spiral","description":"Grids with thermal generators dependent on disappearing water.","operationId":"water_death_spiral_v2_insights_water_death_spiral_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"min_water_stress","in":"query","required":false,"schema":{"type":"number","description":"Minimum water stress score","default":4.0,"title":"Min Water Stress"},"description":"Minimum water stress score"},{"name":"min_revenue_m","in":"query","required":false,"schema":{"type":"number","description":"Minimum revenue per generator $M","default":10,"title":"Min Revenue M"},"description":"Minimum revenue per generator $M"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"provenance":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"refresh":{"type":"string"},"homepage":{"type":"string"}},"additionalProperties":true}},"methodology":{"type":"string"},"methodology_version":{"type":"string"},"confidence":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"source_register":{"type":"string"},"receipt":{"type":"object","properties":{"receipt_id":{"type":"string"},"computed_at":{"type":"string"},"graph_snapshot_id":{"type":"string"},"response_sha256":{"type":"string"},"software_build":{"type":"string"},"retrieve":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"count":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"grid_id":{"type":"string"},"grid_revenue_bn":{"type":"number"},"stressed_gens":{"type":"integer"},"revenue_at_risk":{"type":"integer"},"avg_water_stress":{"type":"number"}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/insights/hidden-demand":{"get":{"tags":["Insights"],"summary":"Hidden Demand","description":"Grids with underserved substations — suppressed demand that would materialise with supply.","operationId":"hidden_demand_v2_insights_hidden_demand_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"max_security_score","in":"query","required":false,"schema":{"type":"number","description":"Maximum energy security score","default":40,"title":"Max Security Score"},"description":"Maximum energy security score"},{"name":"min_substations","in":"query","required":false,"schema":{"type":"integer","description":"Minimum underserved substations","default":5,"title":"Min Substations"},"description":"Minimum underserved substations"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"provenance":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"refresh":{"type":"string"},"homepage":{"type":"string"}},"additionalProperties":true}},"methodology":{"type":"string"},"methodology_version":{"type":"string"},"confidence":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"source_register":{"type":"string"},"receipt":{"type":"object","properties":{"receipt_id":{"type":"string"},"computed_at":{"type":"string"},"graph_snapshot_id":{"type":"string"},"response_sha256":{"type":"string"},"software_build":{"type":"string"},"retrieve":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"count":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"grid_id":{"type":"string"},"revenue_bn":{"type":"number"},"underserved_subs":{"type":"integer"},"avg_security":{"type":"number"}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/insights/queue-blockage":{"get":{"tags":["Insights"],"summary":"Queue Blockage","description":"Utilities with low interconnection build rates — screening for queue-management conflicts of interest.\n\nReports each utility's queue composition since `since_year`. Every project is\naccounted for across buckets that sum to total_projects:\n  * built       — q_status='operational'\n  * withdrawn   — q_status='withdrawn'\n  * active      — q_status='active'\n  * other       — any other status (planned, suspended, on hold, etc.).\n                  Exposed so no project is silently dropped from view.\n\nTwo complementary completion metrics, BOTH as % of total_projects:\n  * build_rate_pct           — built / total. Comprehensive — catches stalled\n                               queues (high active) AND kick-outs (high withdrawn).\n  * terminal_completion_pct  — built / (built + withdrawn). Of RESOLVED projects,\n                               what fraction were built. Null when no projects\n                               have resolved (semantically undefined, not 0).\n\nAll percentages computed on COUNTS (metric_basis='project_count'). For MW-weighted\nanalysis use the *_mw fields and compute client-side.\n\nDefault filter (max_build_rate_pct=10) catches utilities where <10% of all\nsubmissions get built. Adjust via query params.","operationId":"queue_blockage_v2_insights_queue_blockage_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"since_year","in":"query","required":false,"schema":{"type":"integer","maximum":2030,"minimum":2000,"description":"Earliest queue submission year considered","default":2015,"title":"Since Year"},"description":"Earliest queue submission year considered"},{"name":"min_total_projects","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Minimum total projects per utility to include","default":100,"title":"Min Total Projects"},"description":"Minimum total projects per utility to include"},{"name":"max_build_rate_pct","in":"query","required":false,"schema":{"type":"number","maximum":100,"minimum":0,"description":"Filter: build_rate_pct must be strictly less than this","default":10,"title":"Max Build Rate Pct"},"description":"Filter: build_rate_pct must be strictly less than this"},{"name":"min_active_mw","in":"query","required":false,"schema":{"type":"number","minimum":0,"description":"Filter: active queue MW must be at least this","default":0,"title":"Min Active Mw"},"description":"Filter: active queue MW must be at least this"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"provenance":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"refresh":{"type":"string"},"homepage":{"type":"string"}},"additionalProperties":true}},"methodology":{"type":"string"},"methodology_version":{"type":"string"},"confidence":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"source_register":{"type":"string"},"receipt":{"type":"object","properties":{"receipt_id":{"type":"string"},"computed_at":{"type":"string"},"graph_snapshot_id":{"type":"string"},"response_sha256":{"type":"string"},"software_build":{"type":"string"},"retrieve":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"count":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"utility":{"type":"string"},"total_projects":{"type":"integer"},"built":{"type":"integer"},"withdrawn":{"type":"integer"},"active":{"type":"integer"},"other":{"type":"integer"},"build_rate_pct":{"type":"number"},"withdrawn_pct":{"type":"number"},"active_pct":{"type":"number"},"other_pct":{"type":"number"},"terminal_completion_pct":{"type":"number"},"built_mw":{"type":"integer"},"withdrawn_mw":{"type":"integer"},"active_mw":{"type":"integer"},"total_mw":{"type":"integer"},"metric_basis":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/insights/compound-vulnerability":{"get":{"tags":["Insights"],"summary":"Compound Vulnerability","description":"Triple-threat generators: water-stressed + carbon-priced + queue competition.","operationId":"compound_vulnerability_v2_insights_compound_vulnerability_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"min_revenue_m","in":"query","required":false,"schema":{"type":"number","description":"Minimum revenue $M","default":50,"title":"Min Revenue M"},"description":"Minimum revenue $M"},{"name":"min_water_stress","in":"query","required":false,"schema":{"type":"number","description":"Minimum water stress","default":3,"title":"Min Water Stress"},"description":"Minimum water stress"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"provenance":{"type":"object","properties":{"as_of":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"refresh":{"type":"string"},"homepage":{"type":"string"}},"additionalProperties":true}},"methodology":{"type":"string"},"methodology_version":{"type":"string"},"confidence":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"source_register":{"type":"string"},"receipt":{"type":"object","properties":{"receipt_id":{"type":"string"},"computed_at":{"type":"string"},"graph_snapshot_id":{"type":"string"},"response_sha256":{"type":"string"},"software_build":{"type":"string"},"retrieve":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"count":{"type":"integer"},"items":{"type":"array","items":{}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/insights/siting/sites":{"post":{"tags":["Insights"],"summary":"Siting Sites","description":"Screen the caller's actual candidate sites — the exception ledger.\n\nPOST a shortlist (up to 50) with a target load. A site is a coordinate\nor, since methodology 1.8, a GeoJSON Polygon/MultiPolygon boundary — a\nreal land assembly. With a boundary, distances measure from the asserted\nedge, flood evidence becomes an area intersection (share of site in EA\nZones 2/3, net area outside Zone 3), and the receipt echoes the\nboundary's sha256 and area, never the outline itself. Each site\nreturns one of four verdicts — proceed / investigate / reject /\ninsufficient_evidence — with material findings, per-check evidence\n(present or explicitly absent, with grain) and a recommended next action.\nHard gates and abstention, not a composite score: a site with no visible\nEHV connection path fails the gate; a site whose evidence is too thin is\nabstained on, never scored low.\n\nScreening-grade pre-diligence: it identifies which candidates deserve\ndetailed grid and site work, which contain visible disqualifiers, and\nwhich critical facts remain unknown. It does not claim available\ncapacity, connection dates, reinforcement needs, cost, engineering\nfeasibility, land title or planning status.","operationId":"siting_sites_v2_insights_siting_sites_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteScreenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/insights/diligence/entities":{"post":{"tags":["Insights"],"summary":"Diligence Entities","description":"Screen the caller's counterparties — the diligence exception ledger.\n\nPOST a list of entities (up to 25) identified by LEI, Companies House\nnumber or exact legal name. Each entity returns one of four verdicts —\nproceed / investigate / reject / insufficient_evidence — with material\nfindings, per-check evidence (present or explicitly absent, with grain)\nand a recommended next action. Hard gates and abstention, not a\ncomposite score: an exact primary sanctions-list match fails the gate;\nan entity the registers cannot identify is abstained on, never scored.\n\nScreening-grade pre-diligence: it identifies which counterparties\ndeserve full KYC and primary-document work, which contain visible\ndisqualifiers, and which critical facts remain unknown. It does not\nclaim creditworthiness, litigation exposure, tax standing, or ultimate\neconomic beneficiaries beyond the registers cited.","operationId":"diligence_entities_v2_insights_diligence_entities_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiligenceScreenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiligenceScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/insights/siting":{"get":{"tags":["Insights"],"summary":"Siting","description":"Rank grid zones for siting a large new load (data centre / industrial).\n\nScreening-grade: eliminates and ranks zones for a connection study — it does\nnot replace utility confirmation or a power-flow study. Returns ranked\ncandidate zones AND rejected zones with\nthe single dominant constraint for each, every zone scored transparently from\nclean-firm supply, EHV connection points, wholesale price, water/cooling risk\nand interconnection-queue congestion — with data-confidence baked into the\nscore so a thin-evidence zone cannot outrank a well-evidenced one.","operationId":"siting_v2_insights_siting_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"countries","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated ISO-2 country codes to screen, e.g. GB,IE,NO,SE,FI,DK,NL,BE,FR","title":"Countries"},"description":"Comma-separated ISO-2 country codes to screen, e.g. GB,IE,NO,SE,FI,DK,NL,BE,FR"},{"name":"load_mw","in":"query","required":false,"schema":{"type":"number","description":"Size of the new load to site, MW","default":300,"title":"Load Mw"},"description":"Size of the new load to site, MW"},{"name":"min_kv","in":"query","required":false,"schema":{"type":"number","description":"Minimum substation voltage for interconnection, kV","default":275,"title":"Min Kv"},"description":"Minimum substation voltage for interconnection, kV"},{"name":"firm_clean_only","in":"query","required":false,"schema":{"type":"boolean","description":"Require dispatchable clean-firm supply (hydro/nuclear/geothermal/biomass); wind/solar reported but not counted as firm","default":true,"title":"Firm Clean Only"},"description":"Require dispatchable clean-firm supply (hydro/nuclear/geothermal/biomass); wind/solar reported but not counted as firm"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"description":"Number of candidate zones to return","default":20,"title":"Limit"},"description":"Number of candidate zones to return"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/investigations":{"post":{"tags":["workspace"],"summary":"Create Investigation","description":"Create an investigation: a named, saved input set the graph is asked\nabout repeatedly. Items are validated against the screen's candidate\ncontract at write time.","operationId":"create_investigation_v2_workspace_investigations_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workspace"],"summary":"List Investigations","operationId":"list_investigations_v2_workspace_investigations_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"active","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/investigations/{inv_id}":{"get":{"tags":["workspace"],"summary":"Get Investigation","operationId":"get_investigation_v2_workspace_investigations__inv_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workspace"],"summary":"Patch Investigation","operationId":"patch_investigation_v2_workspace_investigations__inv_id__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestigationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/investigations/{inv_id}/items":{"post":{"tags":["workspace"],"summary":"Add Items","operationId":"add_items_v2_workspace_investigations__inv_id__items_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemsAdd"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/investigations/{inv_id}/items/{item_id}":{"patch":{"tags":["workspace"],"summary":"Patch Item","operationId":"patch_item_v2_workspace_investigations__inv_id__items__item_id__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItemOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspace"],"summary":"Remove Item","description":"Soft remove: the item leaves future runs; past run snapshots and\nreceipts are immutable and unaffected.","operationId":"remove_item_v2_workspace_investigations__inv_id__items__item_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemovedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/investigations/{inv_id}/runs":{"post":{"tags":["workspace"],"summary":"Run Investigation","description":"Re-run the saved input set against the current graph.\n\nSnapshots the active items + effective params (immutably, with a hash),\ninvokes the same stateless screen as the bare endpoint, mints a receipt\nchained to the previous run's receipt (`supersedes`), and stores the\ndeterministic evidence diff vs the previous run. Bills as one insight\ncall, exactly like the bare screen.","operationId":"run_investigation_v2_workspace_investigations__inv_id__runs_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RunRequest"},{"type":"null"}],"title":"Req"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workspace"],"summary":"List Runs","operationId":"list_runs_v2_workspace_investigations__inv_id__runs_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/investigations/{inv_id}/runs/{run_id}":{"get":{"tags":["workspace"],"summary":"Get Run","operationId":"get_run_v2_workspace_investigations__inv_id__runs__run_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/investigations/{inv_id}/diff":{"get":{"tags":["workspace"],"summary":"Diff Runs","description":"Full evidence diff between two runs (default: previous vs latest),\ncomputed from the two FROZEN receipts — verdicts and evidence, never a\nscore. Anyone holding the two receipt ids can reproduce it.","operationId":"diff_runs_v2_workspace_investigations__inv_id__diff_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}},{"name":"from_run","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"From Run"}},{"name":"to_run","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"To Run"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiffOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/investigations/{inv_id}/annotations":{"post":{"tags":["workspace"],"summary":"Add Annotation","description":"Attach a customer note to an investigation, item or run: confirm a\nfinding, challenge it, or record context. Tenant-private; annotations are\nnever merged into the public graph and never alter a verdict. Evidence\npayloads are stored verbatim and classed customer_reported.","operationId":"add_annotation_v2_workspace_investigations__inv_id__annotations_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workspace"],"summary":"List Annotations","operationId":"list_annotations_v2_workspace_investigations__inv_id__annotations_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnotationList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/changes":{"get":{"tags":["workspace"],"summary":"Changes Feed","description":"Org-wide feed of verdict-change events, newest first: every run whose\nevidence diff moved a verdict (or changed the input set), across all of\nthe organization's investigations. Each event names the driving check and\ncarries both receipts, so the change is independently verifiable.","operationId":"changes_feed_v2_workspace_changes_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangesFeed"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/investigations/{inv_id}/monitors":{"post":{"tags":["workspace"],"summary":"Create Monitor","description":"Watch this investigation: the daily scheduler re-runs it on the chosen\ncadence, chains the receipts, and any verdict change lands in\n/v2/workspace/changes. One active monitor per investigation; each\nscheduled run bills at the insight rate, like a manual run.","operationId":"create_monitor_v2_workspace_investigations__inv_id__monitors_post","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"inv_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Inv Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/monitors":{"get":{"tags":["workspace"],"summary":"List Monitors","operationId":"list_monitors_v2_workspace_monitors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorList"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/workspace/monitors/{monitor_id}":{"patch":{"tags":["workspace"],"summary":"Patch Monitor","operationId":"patch_monitor_v2_workspace_monitors__monitor_id__patch","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"monitor_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Monitor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/evidence":{"post":{"tags":["workspace"],"summary":"Create Evidence","description":"Store a tenant-private evidence object: a customer polygon or GIS layer\n(geometry), a file such as utility correspondence, a connection study or a\nconsultant report (document, base64), or structured data (JSON payload).\n\nStored verbatim and classed customer_reported; never merged into the\npublic graph, never altering a verdict. A geometry object can be used as\na site boundary by referencing its id as boundary_evidence_id on an\ninvestigation item. Identical content re-uploaded within the organization\nreturns the existing object (deduplicated=true).","operationId":"create_evidence_v2_workspace_evidence_post","security":[{"APIKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["workspace"],"summary":"List Evidence","operationId":"list_evidence_v2_workspace_evidence_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"active","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/workspace/evidence/{ev_id}":{"get":{"tags":["workspace"],"summary":"Get Evidence","description":"Metadata by default; include_content=true returns the stored geojson /\nbase64 bytes / payload, verbatim as submitted.","operationId":"get_evidence_v2_workspace_evidence__ev_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"ev_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Ev Id"}},{"name":"include_content","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Content"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceContent"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspace"],"summary":"Remove Evidence","description":"Soft remove. Investigation items that bridged this object keep their\nresolved boundary — run snapshots are self-contained by design, so past\nand future runs of an already-written shortlist are unaffected.","operationId":"remove_evidence_v2_workspace_evidence__ev_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"ev_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Ev Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvidenceRemoved"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/request-link":{"post":{"tags":["auth"],"summary":"Request Link","description":"Request a sign-in link. Always answers ok; if the address belongs to a\nprovisioned workspace user, a single-use link is created and delivered —\nby the configured mail provider, or personally by the founder (the\ndefault: access is founder-provisioned, so login requests reach a person,\nnot a CRM).","operationId":"request_link_v2_auth_request_link_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/redeem":{"post":{"tags":["auth"],"summary":"Redeem","description":"Exchange a single-use login token for a session cookie.","operationId":"redeem_v2_auth_redeem_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_v2_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkOut"}}}}}}},"/v2/auth/me":{"get":{"tags":["auth"],"summary":"Me","description":"Who the current session belongs to; 401 without one. The app shell's\nboot call.","operationId":"me_v2_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}}}}},"/v2/live/vessels":{"get":{"tags":["Live"],"summary":"Live Vessels","description":"SSE stream of derived global AIS activity (anonymous-safe).","operationId":"live_vessels_v2_live_vessels_get","responses":{"200":{"description":"Server-Sent Events stream. Every ~10 s an 'activity' event carries derived global AIS aggregates: distinct vessel count, counts by ship category and a 1-degree density grid. Derived-only by construction — no per-vessel identifiers pending provider licence review.","content":{"application/json":{"schema":{}},"text/event-stream":{"schema":{"type":"string"}}}}}}},"/v2/keys/evaluation":{"post":{"tags":["Keys"],"summary":"Mint Evaluation Key","description":"Instantly mint a 14-day evaluation API key (faceted + insight scope).","operationId":"mint_evaluation_key_v2_keys_evaluation_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvalKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvalKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/grids":{"get":{"tags":["Grids"],"summary":"List Grids","description":"List all grid zones with summary metrics.\n\nReturns a provenance envelope: {\"provenance\": {...}, \"count\": N, \"items\": [GridSummary...]}.\nThe receipt (as_of, sources, methodology, limitations) is not billed — only items are.","operationId":"list_grids_v2_grids_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"min_revenue_bn","in":"query","required":false,"schema":{"type":"number","description":"Minimum total revenue in $B","default":0,"title":"Min Revenue Bn"},"description":"Minimum total revenue in $B"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["revenue","name","demand"],"default":"revenue","title":"Sort"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GridsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/grids/{grid_id}":{"get":{"tags":["Grids"],"summary":"Get Grid","description":"Get a single grid zone. Default shape=faceted → folded facet view: a lossless superset\nof raw's data plus a curated energy_mix block (fuel mix + intensity + fuel_mix_coverage +\ndirty_share_pct). shape=raw → the original GridSummary (pin here for the frozen Viewer\ncontract and legacy consumers; the /v2/grids list stays raw GridSummary).","operationId":"get_grid_v2_grids__grid_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"grid_id","in":"path","required":true,"schema":{"type":"string","title":"Grid Id"}},{"name":"shape","in":"query","required":false,"schema":{"type":"string","description":"faceted | raw","default":"faceted","title":"Shape"},"description":"faceted | raw"},{"name":"include_sparse","in":"query","required":false,"schema":{"type":"boolean","description":"include population-sparse facets","default":false,"title":"Include Sparse"},"description":"include population-sparse facets"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"core":{"type":"object","properties":{"id":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"name":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true},"facets":{"type":"object","properties":{"market":{"type":"object","properties":{"avg_price":{"type":"number"},"avg_price_usd":{"type":"number"},"local_currency":{"type":"string"},"median_price":{"type":"number"},"median_price_usd":{"type":"number"},"price_basis":{"type":"string"},"price_currency":{"type":"string"},"price_emission_quadrant":{"type":"string"},"price_fidelity":{"type":"string"},"price_layer":{"type":"string"},"price_volatility":{"type":"number"},"price_volatility_usd":{"type":"number"}},"additionalProperties":true},"capacity":{"type":"object","properties":{"capacity_inventory_status":{"type":"string"},"capacity_mechanism":{"type":"string"},"net_revenue_bn":{"type":"number"},"stress_total_capacity_mw":{"type":"integer"}},"additionalProperties":true},"core":{"type":"object","properties":{"country_code":{"type":"string"},"dominant_fuel":{"type":"string"},"sync_area_id":{"type":"string"},"zone_key":{"type":"string"}},"additionalProperties":true},"location":{"type":"object","properties":{"country_name":{"type":"string"}},"additionalProperties":true},"demand":{"type":"object","properties":{"demand_avg_mw":{"type":"number"},"demand_peak_mw":{"type":"number"},"demand_trajectory":{"type":"string"},"demand_yoy_growth_pct":{"type":"number"}},"additionalProperties":true},"provenance":{"type":"object","properties":{"_provenance":{"type":"object","properties":{"demand":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"diversity":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"fuel_mix":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"generation":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"genmix":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"inertia":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"money":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"money_wedge":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"ntl":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"price":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"seasonal":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"stress":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true},"energy_mix":{"type":"object","properties":{"dirty_share_pct":{"type":"number"},"diversity_class":{"type":"string"},"diversity_dominant_fuel":{"type":"string"},"diversity_dominant_pct":{"type":"number"},"diversity_entropy":{"type":"number"},"diversity_n_fuels":{"type":"integer"},"dominant_fuel_generation":{"type":"string"},"dominant_fuel_pct":{"type":"number"},"fossil_growth_3yr_pct":{"type":"number"},"fuel_diversity_class":{"type":"string"},"fuel_entropy":{"type":"number"},"fuel_mix_intensity_json":{"type":"string"},"fuel_mix_json":{"type":"string"},"genmix_fastest_declining_fuel":{"type":"string"},"genmix_fastest_declining_pp_yr":{"type":"number"},"genmix_fastest_growing_fuel":{"type":"string"},"genmix_fastest_growing_pp_yr":{"type":"number"},"re_growth_3yr_pct":{"type":"number"},"seasonal_peak_re_pct":{"type":"number"},"seasonal_trough_re_pct":{"type":"number"},"dominant_fuel":{"type":"string"},"dominant_fuel_generation_pct":{"type":"number"},"fuel_mix":{"type":"array","items":{"type":"object","properties":{"fuel":{"type":"string"},"sites":{"type":"integer"},"mw":{"type":"integer"},"share_pct":{"type":"number"}},"additionalProperties":true}},"fuel_mix_intensity":{"type":"array","items":{"type":"object","properties":{"fuel":{"type":"string"},"sites":{"type":"integer"},"capacity_mw":{"type":"integer"},"capacity_share_pct":{"type":"number"},"generation_twh":{"type":"integer"},"generation_share_pct":{"type":"number"},"dispatch_intensity":{"type":"number"},"flag":{"type":"string"}},"additionalProperties":true}},"fuel_mix_method":{"type":"string"},"fuel_mix_coverage":{"type":"string"}},"additionalProperties":true},"grid_stress":{"type":"object","properties":{"dominant_fuel_generation_pct":{"type":"number"},"seasonal_mismatch_class":{"type":"string"},"seasonal_months_covered":{"type":"integer"},"seasonal_peak_month":{"type":"integer"},"seasonal_swing":{"type":"number"},"seasonal_trough_month":{"type":"integer"},"stress_avg_carbon_cost":{"type":"integer"},"stress_avg_water_stress":{"type":"number"},"stress_carbon_exposed_generators":{"type":"integer"},"stress_carbon_exposed_gw":{"type":"number"},"stress_carbon_intensity":{"type":"number"},"stress_class":{"type":"string"},"stress_critical_cooling_plants":{"type":"integer"},"stress_demand_growth_pct":{"type":"number"},"stress_demand_trajectory":{"type":"string"},"stress_index":{"type":"number"},"stress_price_direction":{"type":"string"},"stress_total_co2_tonnes":{"type":"integer"}},"additionalProperties":true},"financials":{"type":"object","properties":{"gen_revenue_bn":{"type":"number"},"money_conservation_ratio":{"type":"number"},"money_consumer_spend_m":{"type":"number"},"money_contributing_tiers":{"type":"array","items":{"type":"string"}},"money_fidelity_score":{"type":"number"},"money_gen_coverage":{"type":"number"},"money_gen_revenue_m":{"type":"number"},"money_network_m":{"type":"number"},"money_retail_quality_flag":{"type":"boolean"},"money_retail_usd_mwh":{"type":"number"},"money_retail_witness_ratio":{"type":"number"},"money_supply_margin_m":{"type":"number"},"money_taxes_levies_m":{"type":"number"},"money_wedge_audit_status":{"type":"string"},"money_wedge_contributing_tiers":{"type":"array","items":{"type":"string"}},"money_wedge_m":{"type":"number"},"money_wholesale_usd_mwh":{"type":"number"},"revenue_model":{"type":"string"},"total_revenue_bn":{"type":"number"}},"additionalProperties":true},"operations":{"type":"object","properties":{"generation_period":{"type":"string"},"generation_trend":{"type":"string"}},"additionalProperties":true},"grid_stability":{"type":"object","properties":{"inertia_est_rocof_hz_s":{"type":"number"},"inertia_inverter_mw":{"type":"number"},"inertia_inverter_pct":{"type":"number"},"inertia_largest_unit_mw":{"type":"number"},"inertia_sync_mw":{"type":"number"},"inertia_total_mws":{"type":"number"},"stress_inverter_pct":{"type":"number"}},"additionalProperties":true},"nightlights":{"type":"object","properties":{"ntl_activity_index":{"type":"number"},"ntl_electrification_rate":{"type":"number"},"ntl_grid_reliability":{"type":"number"},"ntl_latest_lit_fraction":{"type":"number"},"ntl_latest_radiance":{"type":"number"},"ntl_mean_lit_fraction":{"type":"number"},"ntl_mean_radiance":{"type":"number"},"ntl_months_observed":{"type":"integer"},"ntl_volatility":{"type":"number"},"ntl_window":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"meta":{"type":"object","properties":{"label":{"type":"string"},"as_of":{"type":"string"},"present_facets":{"type":"array","items":{"type":"string"}},"suppressed_sparse":{"type":"array","items":{"type":"string"}},"gate":{"type":"number"}},"additionalProperties":true}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/grids/{grid_id}/generators":{"get":{"tags":["Grids"],"summary":"Grid Generators","description":"List generators in a grid zone. Default shape=raw (flat node dicts, unchanged).\nshape=faceted returns each as a full faceted Generator node (superset of raw; facets\nnever overwritten). Same per-item facet-point billing either way. Caching + cache-hit\nbilling via @cache_response (keyed on shape + cursor + sort/order).\nPagination (opt-in): ?cursor=start -> {items, next_cursor, count}. Sort (opt-in, #6b):\n?sort=+?order= over the numeric allowlist; omitted -> legacy capacity_mw DESC\nbyte-identical. Cursor tokens are bound to (sort, order).","operationId":"grid_generators_v2_grids__grid_id__generators_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"grid_id","in":"path","required":true,"schema":{"type":"string","title":"Grid Id"}},{"name":"fuel","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by fuel source","title":"Fuel"},"description":"Filter by fuel source"},{"name":"min_mw","in":"query","required":false,"schema":{"type":"number","description":"Minimum capacity MW","default":0,"title":"Min Mw"},"description":"Minimum capacity MW"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"shape","in":"query","required":false,"schema":{"type":"string","description":"raw | faceted","default":"raw","title":"Shape"},"description":"raw | faceted"},{"name":"include_sparse","in":"query","required":false,"schema":{"type":"boolean","description":"include population-sparse facets (faceted only)","default":false,"title":"Include Sparse"},"description":"include population-sparse facets (faceted only)"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"'start' begins a paginated envelope; then pass next_cursor","title":"Cursor"},"description":"'start' begins a paginated envelope; then pass next_cursor"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"enum":["capacity_mw","est_revenue_usd","water_stress_score"],"type":"string"},{"type":"null"}],"description":"sort field (default capacity_mw; nulls sort below any value)","title":"Sort"},"description":"sort field (default capacity_mw; nulls sort below any value)"},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"annual_co2_mt":{"type":"number"},"canonical_repair_kind":{"type":"string"},"canonical_repair_method":{"type":"string"},"canonical_repair_source":{"type":"string"},"canonical_repair_updated_at":{"type":"string"},"capacity_factor":{"type":"number"},"capacity_mw":{"type":"integer"},"carbon_cost_basis":{"type":"string"},"carbon_est_annual_cost_usd":{"type":"integer"},"carbon_kind":{"type":"string"},"carbon_mechanism_name":{"type":"string"},"carbon_mechanism_type":{"type":"string"},"carbon_method":{"type":"string"},"carbon_price_usd_tco2":{"type":"integer"},"carbon_source":{"type":"string"},"carbon_updated_at":{"type":"string"},"coal_phaseout_year":{"type":"integer"},"combustion_tech":{"type":"string"},"commissioning_year":{"type":"integer"},"cooling_kind":{"type":"string"},"cooling_method":{"type":"string"},"cooling_nearest_dam_km":{"type":"number"},"cooling_source":{"type":"string"},"cooling_updated_at":{"type":"string"},"cooling_vulnerability":{"type":"string"},"country_code":{"type":"string"},"country_iso2":{"type":"string"},"country_name":{"type":"string"},"ct_activity_annual_mwh":{"type":"integer"},"ct_avg_capacity_factor":{"type":"number"},"ct_avg_emissions_factor":{"type":"number"},"ct_co2_annual_tonnes":{"type":"integer"},"ct_emissions_conf":{"type":"string"},"ct_emissions_year":{"type":"string"},"ct_kind":{"type":"string"},"ct_match_distance_m":{"type":"number"},"ct_method":{"type":"string"},"ct_source":{"type":"string"},"ct_source_id":{"type":"integer"},"ct_source_name":{"type":"string"},"ct_updated_at":{"type":"string"},"drought_risk":{"type":"string"},"drought_risk_score":{"type":"number"},"elec_power_water_risk_cat":{"type":"integer"},"elec_power_water_risk_score":{"type":"number"},"emission_factor":{"type":"integer"},"env_cells":{"type":"integer"},"env_dominant_trend":{"type":"string"},"env_kind":{"type":"string"},"env_method":{"type":"string"},"env_pct_declining":{"type":"number"},"env_pct_seasonal":{"type":"number"},"env_pct_urbanising":{"type":"number"},"env_source":{"type":"string"},"env_updated_at":{"type":"string"},"est_revenue_usd":{"type":"integer"},"firms_avg_frp":{"type":"number"},"firms_confidence_class":{"type":"string"},"firms_confidence_note":{"type":"string"},"firms_detection_frequency":{"type":"number"},"firms_first_detection":{"type":"string"},"firms_kind":{"type":"string"},"firms_last_detection":{"type":"string"},"firms_latest_gap_months":{"type":"integer"},"firms_max_frp":{"type":"number"},"firms_method":{"type":"string"},"firms_months_active_pct":{"type":"number"},"firms_months_with_detections":{"type":"integer"},"firms_operational_class":{"type":"string"},"firms_p90_frp":{"type":"number"},"firms_source":{"type":"string"},"firms_total_detections":{"type":"integer"},"firms_total_months":{"type":"integer"},"firms_updated_at":{"type":"string"},"flood_event_count":{"type":"integer"},"flood_kind":{"type":"string"},"flood_method":{"type":"string"},"flood_pct":{"type":"number"},"flood_risk":{"type":"string"},"flood_risk_coastal_score":{"type":"number"},"flood_risk_riverine_score":{"type":"number"},"flood_source":{"type":"string"},"flood_updated_at":{"type":"string"},"flood_variability":{"type":"number"},"fuel_canonical":{"type":"string"},"capacity_kind":{"type":"string"},"capacity_method":{"type":"string"},"capacity_mw_pre_rollup":{"type":"integer"},"capacity_source":{"type":"string"},"capacity_updated_at":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/grids/{grid_id}/flows":{"get":{"tags":["Grids"],"summary":"Grid Flows","description":"Cross-border electricity flows for a grid zone.","operationId":"grid_flows_v2_grids__grid_id__flows_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"grid_id","in":"path","required":true,"schema":{"type":"string","title":"Grid Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"from_grid":{"type":"string"},"to_grid":{"type":"string"},"twh":{"nullable":true},"source":{"type":"string"},"direction":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/grids/{grid_id}/operators":{"get":{"tags":["Grids"],"summary":"Grid Operators","description":"Top operators by revenue in a grid zone.","operationId":"grid_operators_v2_grids__grid_id__operators_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"grid_id","in":"path","required":true,"schema":{"type":"string","title":"Grid Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"operator":{"type":"string"},"revenue":{"type":"integer"},"assets":{"type":"integer"},"fuels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/grids/{grid_id}/context":{"get":{"tags":["Grids"],"summary":"Grid Context","description":"Grid control + governance context: balancing authority, TSO, jurisdiction,\nsynchronous area, generator fleet size and interconnections - each link tagged\nwith its edge provenance kind.","operationId":"grid_context_v2_grids__grid_id__context_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"grid_id","in":"path","required":true,"schema":{"type":"string","title":"Grid Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"grid":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"additionalProperties":true},"jurisdiction":{"type":"object","properties":{"name":{"type":"string"},"id":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true},"synchronous_area":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true},"balancing_authorities":{"type":"array","items":{}},"tsos":{"type":"array","items":{}},"fleet":{"type":"object","properties":{"generator_count":{"type":"integer"},"total_capacity_mw":{"type":"integer"}},"additionalProperties":true},"interconnections":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/grids/{grid_id}/monetary-authority":{"get":{"tags":["Grids"],"summary":"Grid Monetary Authority","description":"Typed traversal: Grid -GOVERNED_BY-> Jurisdiction <-MONETARY_AUTHORITY_OF- CentralBank,\neach hop tagged with its edge provenance kind. Euro-area grids resolve to the ECB.","operationId":"grid_monetary_authority_v2_grids__grid_id__monetary_authority_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"grid_id","in":"path","required":true,"schema":{"type":"string","title":"Grid Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"grid":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"additionalProperties":true},"count":{"type":"integer"},"authorities":{"type":"array","items":{"type":"object","properties":{"jurisdiction":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"edge":{"type":"object","properties":{"type":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"central_bank":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"edge":{"type":"object","properties":{"type":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/generators/search":{"get":{"tags":["Generators"],"summary":"Search Generators","description":"Search generators with multi-dimensional filters. Default shape=raw (flat rows,\nunchanged). shape=faceted returns each match as a full faceted Generator node\n(superset of raw), with grid_id kept as top-level relationship context (facets never\noverwritten). Same per-item facet-point billing either way; capped at ?limit.\nPagination (opt-in): ?cursor=start -> {items, next_cursor, count}; follow next_cursor\nuntil null. Sort (opt-in, #6b): ?sort=+?order= over the numeric allowlist; omitted ->\nlegacy est_revenue_usd DESC byte-identical. Cursor tokens are bound to (sort, order).","operationId":"search_generators_v2_generators_search_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"fuel","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Fuel source: Coal, Gas, Solar, Wind, Hydro, Nuclear","title":"Fuel"},"description":"Fuel source: Coal, Gas, Solar, Wind, Hydro, Nuclear"},{"name":"grid_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Grid zone ID","title":"Grid Id"},"description":"Grid zone ID"},{"name":"operator","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Operator/group name (partial match)","title":"Operator"},"description":"Operator/group name (partial match)"},{"name":"min_mw","in":"query","required":false,"schema":{"type":"number","description":"Minimum capacity MW","default":0,"title":"Min Mw"},"description":"Minimum capacity MW"},{"name":"min_revenue","in":"query","required":false,"schema":{"type":"number","description":"Minimum revenue USD","default":0,"title":"Min Revenue"},"description":"Minimum revenue USD"},{"name":"water_stress_min","in":"query","required":false,"schema":{"type":"number","description":"Minimum water stress score (0-5)","default":0,"title":"Water Stress Min"},"description":"Minimum water stress score (0-5)"},{"name":"retiring_before","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Planned retirement year","title":"Retiring Before"},"description":"Planned retirement year"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"shape","in":"query","required":false,"schema":{"type":"string","description":"raw | faceted","default":"raw","title":"Shape"},"description":"raw | faceted"},{"name":"include_sparse","in":"query","required":false,"schema":{"type":"boolean","description":"include population-sparse facets (faceted only)","default":false,"title":"Include Sparse"},"description":"include population-sparse facets (faceted only)"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"'start' begins a paginated envelope; then pass next_cursor","title":"Cursor"},"description":"'start' begins a paginated envelope; then pass next_cursor"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"enum":["capacity_mw","est_revenue_usd","water_stress_score"],"type":"string"},{"type":"null"}],"description":"sort field (default est_revenue_usd; nulls sort below any value)","title":"Sort"},"description":"sort field (default est_revenue_usd; nulls sort below any value)"},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"grid_id":{"type":"string"},"capacity_mw":{"type":"integer"},"country_code":{"type":"string"},"country_iso3":{"type":"string"},"country_name":{"type":"string"},"fuel_canonical":{"type":"string"},"fuel_primary":{"type":"string"},"fuel_source":{"type":"string"},"gem_location_id":{"type":"string"},"gem_unit_id":{"type":"string"},"id":{"type":"string"},"is_canonical":{"type":"boolean"},"lat":{"type":"number"},"lifecycle_status":{"type":"string"},"lng":{"type":"number"},"name":{"type":"string"},"operator":{"type":"string"},"operator_display":{"type":"string"},"operator_display_kind":{"type":"string"},"operator_display_method":{"type":"string"},"operator_display_source":{"type":"string"},"operator_display_updated_at":{"type":"string"},"operator_method":{"type":"string"},"operator_name":{"type":"string"},"output_mw":{"type":"integer"},"owner_leis":{"type":"array","items":{"nullable":true}},"owner_name":{"type":"string"},"owners_parsed":{"type":"array","items":{"type":"string"}},"owners_pct":{"type":"array","items":{"type":"number"}},"parent_leis":{"type":"array","items":{}},"parents_parsed":{"type":"array","items":{}},"parents_pct":{"type":"array","items":{}},"promotion_kind":{"type":"string"},"promotion_method":{"type":"string"},"promotion_source":{"type":"string"},"promotion_updated_at":{"type":"string"},"resolved_group":{"type":"string"},"resolved_group_canonical":{"type":"string"},"source":{"type":"string"},"start_date":{"type":"string"},"sub_type":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/generators/{gen_id}":{"get":{"tags":["Generators"],"summary":"Get Generator","description":"Get a single generator. Default shape=faceted groups properties into core + facets;\nshape=raw returns flat node props (pin here for legacy/Viewer consumers).","operationId":"get_generator_v2_generators__gen_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}},{"name":"shape","in":"query","required":false,"schema":{"type":"string","description":"faceted | raw","default":"faceted","title":"Shape"},"description":"faceted | raw"},{"name":"include_sparse","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Sparse"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"core":{"type":"object","properties":{"id":{"type":"string"},"is_canonical":{"type":"boolean"},"lat":{"type":"number"},"lifecycle_status":{"type":"string"},"lng":{"type":"number"},"name":{"type":"string"},"osm_id":{"type":"integer"},"source":{"type":"string"}},"additionalProperties":true},"facets":{"type":"object","properties":{"operations":{"type":"object","properties":{"age_years":{"type":"integer"},"capacity_factor":{"type":"number"},"commissioning_year":{"type":"integer"},"gen_mwh_2022":{"type":"integer"},"gen_mwh_2023":{"type":"integer"},"gen_mwh_2024":{"type":"integer"},"gen_mwh_avg3yr":{"type":"integer"},"generation_gwh":{"type":"number"},"start_date":{"type":"string"}},"additionalProperties":true},"capacity":{"type":"object","properties":{"capacity_mw":{"type":"integer"},"output_mw":{"type":"integer"}},"additionalProperties":true},"provenance":{"type":"object","properties":{"fuel_source":{"type":"string"},"method":{"type":"string"},"_provenance":{"type":"object","properties":{"cooling":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"ct":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"env":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"firms":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"flood":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"ntl":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"operator_display":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"owner_display":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"port":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"revenue":{"type":"object","properties":{"confidence":{"type":"string"},"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"stranding":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"tws":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"water_risk":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true},"water":{"type":"object","properties":{"cooling_nearest_dam_km":{"type":"number"},"cooling_vulnerability":{"type":"string"},"elec_power_water_risk_cat":{"type":"integer"},"elec_power_water_risk_score":{"type":"number"},"tws_mean_cm":{"type":"number"},"tws_recent_cm":{"type":"number"},"tws_trend_cm_yr":{"type":"number"},"water_depletion_score":{"type":"number"},"water_stress_cat":{"type":"integer"},"water_stress_score":{"type":"number"}},"additionalProperties":true},"location":{"type":"object","properties":{"country_code":{"type":"string"},"country_name":{"type":"string"}},"additionalProperties":true},"core":{"type":"object","properties":{"country_iso2":{"type":"string"},"fuel_canonical":{"type":"string"},"fuel_primary":{"type":"string"},"status":{"type":"string"}},"additionalProperties":true},"identity":{"type":"object","properties":{"ct_match_distance_m":{"type":"integer"},"ct_source_id":{"type":"integer"},"ct_source_name":{"type":"string"},"gppd_idnr":{"type":"string"},"wepp_id":{"type":"string"},"wri_matched":{"type":"boolean"}},"additionalProperties":true},"hazard":{"type":"object","properties":{"drought_risk":{"type":"string"},"drought_risk_score":{"type":"number"},"firms_confidence_class":{"type":"string"},"firms_confidence_note":{"type":"string"},"firms_detection_frequency":{"type":"integer"},"firms_latest_gap_months":{"type":"integer"},"firms_months_active_pct":{"type":"number"},"firms_months_with_detections":{"type":"integer"},"firms_operational_class":{"type":"string"},"firms_total_detections":{"type":"integer"},"firms_total_months":{"type":"integer"},"flood_event_count":{"type":"integer"},"flood_pct":{"type":"number"},"flood_risk":{"type":"string"},"flood_risk_coastal_score":{"type":"number"},"flood_risk_riverine_score":{"type":"number"},"flood_variability":{"type":"number"},"thermal_cooling_risk":{"type":"string"}},"additionalProperties":true},"environment":{"type":"object","properties":{"env_cells":{"type":"integer"},"env_dominant_trend":{"type":"string"},"env_pct_declining":{"type":"number"},"env_pct_seasonal":{"type":"number"},"env_pct_urbanising":{"type":"number"}},"additionalProperties":true},"financials":{"type":"object","properties":{"est_revenue_usd":{"type":"integer"},"revenue_est_annual_mwh":{"type":"integer"},"revenue_est_annual_usd":{"type":"integer"},"revenue_tier":{"type":"string"}},"additionalProperties":true},"nightlights":{"type":"object","properties":{"ntl_early_mean_2024":{"type":"number"},"ntl_first_observed":{"type":"string"},"ntl_last_observed":{"type":"string"},"ntl_max_radiance":{"type":"number"},"ntl_mean_quality":{"type":"number"},"ntl_mean_radiance":{"type":"number"},"ntl_min_radiance":{"type":"number"},"ntl_observations":{"type":"integer"},"ntl_recent_mean_2025":{"type":"number"},"ntl_std_radiance":{"type":"number"},"ntl_trend_pct_per_year":{"type":"number"},"ntl_trend_slope_per_year":{"type":"number"}},"additionalProperties":true},"ownership":{"type":"object","properties":{"operator_display":{"type":"string"},"operator_name":{"type":"string"},"owner":{"type":"string"},"owner_display":{"type":"string"},"resolved_group":{"type":"string"},"resolved_group_canonical":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"meta":{"type":"object","properties":{"label":{"type":"string"},"as_of":{"type":"string"},"present_facets":{"type":"array","items":{"type":"string"}},"suppressed_sparse":{"type":"array","items":{"type":"string"}},"gate":{"type":"number"}},"additionalProperties":true}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/generators/{gen_id}/neighbourhood":{"get":{"tags":["Generators"],"summary":"Generator Neighbourhood","description":"Graph neighbourhood around a generator — all connected nodes within N hops.","operationId":"generator_neighbourhood_v2_generators__gen_id__neighbourhood_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}},{"name":"hops","in":"query","required":false,"schema":{"type":"integer","maximum":3,"default":1,"title":"Hops"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"id":{"type":"string"},"edge_type":{"type":"string"},"direction":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/generators/{gen_id}/competitors":{"get":{"tags":["Generators"],"summary":"Generator Competitors","description":"Generators competing in the same grid and fuel type.","operationId":"generator_competitors_v2_generators__gen_id__competitors_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"mw":{"type":"integer"},"fuel":{"type":"string"},"operator":{"type":"string"},"revenue":{"type":"integer"},"similarity":{"type":"integer"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/generators/{gen_id}/weather-correlated":{"get":{"tags":["Generators"],"summary":"Generator Weather Correlated","description":"Generators weather-correlated with this one (same output during weather\nevents). Measured: ERA5 daily-anomaly Pearson r (2015-2025, gpkg_229);\nedges exist at r >= 0.5, same-cell pairs carry r = 1.0 (basis same_cell).","operationId":"generator_weather_correlated_v2_generators__gen_id__weather_correlated_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/generators/{gen_id}/ownership":{"get":{"tags":["Generators"],"summary":"Generator Ownership","description":"Ownership chain: operator(s) and owner(s), each with direct parent, ultimate\nparent, and domicile. Every hop carries its edge provenance kind so the consumer\nsees that operator/owner links are stitched while the corporate tree is registry.","operationId":"generator_ownership_v2_generators__gen_id__ownership_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"generator":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"capacity_mw":{"type":"integer"},"fuel":{"type":"string"}},"additionalProperties":true},"operators":{"type":"array","items":{"type":"object","properties":{"lei":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"edge":{"type":"object","properties":{"type":{"type":"string"},"kind":{"type":"string"},"fidelity_method":{"type":"string"}},"additionalProperties":true},"ultimate_parent":{"nullable":true},"direct_parent":{"type":"object","properties":{"lei":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true},"domicile":{"type":"object","properties":{"jurisdiction":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true}},"owners":{"type":"array","items":{"type":"object","properties":{"lei":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"edge":{"type":"object","properties":{"type":{"type":"string"},"kind":{"type":"string"},"fidelity_method":{"type":"string"}},"additionalProperties":true},"ultimate_parent":{"nullable":true},"direct_parent":{"type":"object","properties":{"lei":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true},"domicile":{"type":"object","properties":{"jurisdiction":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/generators/{gen_id}/topology":{"get":{"tags":["Generators"],"summary":"Generator Topology","description":"Typed traversal: the generator's physical/market topology — grid, jurisdiction,\nsynchronous area, balancing authorities, TSOs, interconnected grids, plant units and\nparent plant. Every hop carries its edge provenance kind (ownership-route pattern).","operationId":"generator_topology_v2_generators__gen_id__topology_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"generator":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"capacity_mw":{"type":"integer"},"fuel":{"type":"string"}},"additionalProperties":true},"grid":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"edge":{"type":"object","properties":{"type":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"jurisdiction":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"edge":{"type":"object","properties":{"type":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"synchronous_area":{"type":"object","properties":{"id":{"type":"string"},"edge":{"type":"object","properties":{"type":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"balancing_authorities":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"nullable":true},"kind":{"type":"string"}},"additionalProperties":true}},"tsos":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"interconnected_grids":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"units":{"type":"array","items":{}},"parent_plant":{"nullable":true}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/generators/{gen_id}/reactors":{"get":{"tags":["Generators"],"summary":"Generator Reactors","description":"Typed traversal: reactors that are PART_OF this plant (PRIS registry), each edge\ncarrying its spatial-match provenance (kind / method / distance_m).","operationId":"generator_reactors_v2_generators__gen_id__reactors_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"generator":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"capacity_mw":{"type":"integer"},"fuel":{"type":"string"}},"additionalProperties":true},"count":{"type":"integer"},"reactors":{"type":"array","items":{}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/operators/revenue":{"get":{"tags":["Operators"],"summary":"Operator Revenue","description":"Top operators by consolidated revenue (generation + network).","operationId":"operator_revenue_v2_operators_revenue_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"min_revenue_bn","in":"query","required":false,"schema":{"type":"number","description":"Minimum total revenue in $B","default":1.0,"title":"Min Revenue Bn"},"description":"Minimum total revenue in $B"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"group":{"type":"string"},"gen_revenue_bn":{"type":"number"},"net_revenue_bn":{"type":"number"},"total_revenue_bn":{"type":"number"},"gen_assets":{"type":"integer"},"net_assets":{"type":"integer"},"gen_mw":{"type":"integer"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/operators/search":{"get":{"tags":["Operators"],"summary":"Search Operators","description":"Search operators by name.","operationId":"search_operators_v2_operators_search_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Operator name search","title":"Q"},"description":"Operator name search"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/operators/{operator_name}/assets":{"get":{"tags":["Operators"],"summary":"Operator Assets","description":"All generators owned by an operator. Default shape=flat (unchanged projection, returns\nall). shape=faceted returns each asset as a full faceted Generator node (superset of flat)\ncapped at ?limit (default 200) to bound per-item facet-point cost.\nPagination (opt-in): ?cursor=start -> {items, next_cursor, count}; keyset on\n(est_revenue_usd DESC, id ASC — revenue non-null via the > 0 filter); no cursor ->\nlegacy behaviour (flat returns all).","operationId":"operator_assets_v2_operators__operator_name__assets_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"operator_name","in":"path","required":true,"schema":{"type":"string","title":"Operator Name"}},{"name":"shape","in":"query","required":false,"schema":{"type":"string","description":"flat | faceted","default":"flat","title":"Shape"},"description":"flat | faceted"},{"name":"include_sparse","in":"query","required":false,"schema":{"type":"boolean","description":"include population-sparse facets (faceted only)","default":false,"title":"Include Sparse"},"description":"include population-sparse facets (faceted only)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"description":"page/cap size (flat without cursor returns all)","default":200,"title":"Limit"},"description":"page/cap size (flat without cursor returns all)"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"'start' begins a paginated envelope; then pass next_cursor","title":"Cursor"},"description":"'start' begins a paginated envelope; then pass next_cursor"},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"enum":["capacity_mw","est_revenue_usd","water_stress_score"],"type":"string"},{"type":"null"}],"description":"sort field (default est_revenue_usd; nulls sort below any value)","title":"Sort"},"description":"sort field (default est_revenue_usd; nulls sort below any value)"},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"fuel":{"type":"string"},"mw":{"type":"integer"},"revenue":{"type":"integer"},"water_stress":{"type":"number"},"retirement":{"type":"integer"},"lat":{"type":"number"},"lng":{"type":"number"},"grid_id":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/graph/query":{"post":{"tags":["Graph"],"summary":"Run Cypher","description":"Execute a read-only Cypher query against the graph.\n\nWARNING: Write operations are blocked. Only MATCH/RETURN queries allowed.\n\nBilling (rebase 2026-07-03): billed on DELIVERED OUTPUT, kind-weighted —\nderived-kind fields (materialized traversals) at traversal-class price,\nempirical fields at the commodity anchor; the raw_cypher category price is\na FLOOR, not the price. Cypher is an expert door, never a discount door.","operationId":"run_cypher_v2_graph_query_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CypherRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"provenance":{"type":"object","properties":{"as_of":{"type":"string"},"labels_touched":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"}},"additionalProperties":true}},"note":{"type":"string"},"source_register":{"type":"string"}},"additionalProperties":true},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"additionalProperties":true}},"count":{"type":"integer"},"truncated":{"type":"boolean"}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/graph/traverse/{node_label}/{node_id}":{"get":{"tags":["Graph"],"summary":"Traverse","description":"Traverse the graph from any node — return all connected nodes within N hops.\nMetered as `traversal`; billed per EDGE DELIVERED (rebase 2026-07-03), linear in\ndepth, with the traversal category price as the per-request floor — so hop-splitting\na deep walk into N shallow calls always costs >= the single deep call.\nKey/org max_hops caps the hop depth when set.","operationId":"traverse_v2_graph_traverse__node_label___node_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"node_label","in":"path","required":true,"schema":{"type":"string","title":"Node Label"}},{"name":"node_id","in":"path","required":true,"schema":{"type":"string","title":"Node Id"}},{"name":"hops","in":"query","required":false,"schema":{"type":"integer","maximum":3,"description":"Number of hops","default":1,"title":"Hops"},"description":"Number of hops"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":3000,"default":100,"title":"Limit"}},{"name":"rel_types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated relationship types to restrict the walk to (topology-focused views skip high-cardinality correlation/containment edges so ownership + grid paths surface). Omit for all.","title":"Rel Types"},"description":"Comma-separated relationship types to restrict the walk to (topology-focused views skip high-cardinality correlation/containment edges so ownership + grid paths surface). Omit for all."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"node_id":{"type":"string"},"name":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"edge_type":{"type":"string"},"from_id":{"type":"string"},"to_id":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/timeseries/prices/{tso_id}":{"get":{"tags":["Time Series"],"summary":"Tso Prices","description":"Wholesale electricity prices for a TSO/grid zone.","operationId":"tso_prices_v2_timeseries_prices__tso_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"tso_id","in":"path","required":true,"schema":{"type":"string","title":"Tso Id"}},{"name":"start","in":"query","required":false,"schema":{"type":"string","description":"Start date ISO format","title":"Start"},"description":"Start date ISO format"},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End date ISO format","title":"End"},"description":"End date ISO format"},{"name":"resolution","in":"query","required":false,"schema":{"type":"string","enum":["hourly","daily","monthly"],"default":"daily","title":"Resolution"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":365,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"period":{"type":"string"},"avg_price":{"type":"number"},"min_price":{"type":"number"},"max_price":{"type":"number"},"currency":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/timeseries/generation/{tso_id}":{"get":{"tags":["Time Series"],"summary":"Tso Generation","description":"Generation by fuel type for a TSO.","operationId":"tso_generation_v2_timeseries_generation__tso_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"tso_id","in":"path","required":true,"schema":{"type":"string","title":"Tso Id"}},{"name":"start","in":"query","required":false,"schema":{"type":"string","description":"Start date ISO format","title":"Start"},"description":"Start date ISO format"},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End date ISO format","title":"End"},"description":"End date ISO format"},{"name":"resolution","in":"query","required":false,"schema":{"type":"string","enum":["hourly","daily"],"default":"daily","title":"Resolution"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"period":{"type":"string"},"fuel_type":{"type":"string"},"avg_mw":{"type":"number"},"peak_mw":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/timeseries/demand/{tso_id}":{"get":{"tags":["Time Series"],"summary":"Tso Demand","description":"Electricity demand for a TSO.","operationId":"tso_demand_v2_timeseries_demand__tso_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"tso_id","in":"path","required":true,"schema":{"type":"string","title":"Tso Id"}},{"name":"start","in":"query","required":false,"schema":{"type":"string","description":"Start date ISO format","title":"Start"},"description":"Start date ISO format"},{"name":"end","in":"query","required":false,"schema":{"type":"string","description":"End date ISO format","title":"End"},"description":"End date ISO format"},{"name":"resolution","in":"query","required":false,"schema":{"type":"string","enum":["hourly","daily"],"default":"daily","title":"Resolution"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"period":{"type":"string"},"avg_demand_mw":{"type":"number"},"peak_demand_mw":{"type":"number"},"min_demand_mw":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/timeseries/interchange":{"get":{"tags":["Time Series"],"summary":"Ba Interchange","description":"US balancing authority interchange flows.","operationId":"ba_interchange_v2_timeseries_interchange_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"from_ba","in":"query","required":false,"schema":{"type":"string","description":"From balancing authority","title":"From Ba"},"description":"From balancing authority"},{"name":"to_ba","in":"query","required":false,"schema":{"type":"string","description":"To balancing authority","title":"To Ba"},"description":"To balancing authority"},{"name":"year","in":"query","required":false,"schema":{"type":"integer","description":"Year","default":2024,"title":"Year"},"description":"Year"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"from_ba":{"type":"string"},"to_ba":{"type":"string"},"total_mw":{"type":"integer"},"total_twh":{"type":"number"},"hours":{"type":"integer"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/series":{"get":{"tags":["series"],"summary":"Series Catalogue","description":"Catalogue of served time-series datasets. Every entry states grain,\nfilterable dimensions, source, licence and commercial status — including\nrights-held datasets, which are listed but not retrievable (serving=held).","operationId":"series_catalogue_v2_series_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SeriesCatalogueEntry"},"type":"array","title":"Response 200 Series Catalogue V2 Series Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/series/{key}":{"get":{"tags":["series"],"summary":"Series Fetch","description":"Fetch rows for one catalogue entry, newest first. Filter with the\nentry's whitelisted dimensions as query parameters (e.g.\n/v2/series/fx-daily?currency=GBP). Rights-held entries return 403.","operationId":"series_fetch_v2_series__key__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Inclusive lower time bound","title":"Start"},"description":"Inclusive lower time bound"},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Inclusive upper time bound","title":"End"},"description":"Inclusive upper time bound"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernedRowsEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/indicators":{"get":{"tags":["indicators"],"summary":"Indicator Catalogue","description":"Catalogue of country-grain indicators. Grain is COUNTRY for every\nentry — deliberately not blended into market-zone surfaces. Rights-held\nentries are listed but not retrievable.","operationId":"indicator_catalogue_v2_indicators_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/IndicatorCatalogueEntry"},"type":"array","title":"Response 200 Indicator Catalogue V2 Indicators Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/indicators/{key}":{"get":{"tags":["indicators"],"summary":"Indicator Fetch","description":"All-country rows for one indicator (country tables are small; the\nfull set returns in one call).","operationId":"indicator_fetch_v2_indicators__key__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernedRowsEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/countries/{iso3}":{"get":{"tags":["indicators"],"summary":"Country Profile","description":"One country's row from every available indicator — the country\nprofile. Indicators the country is absent from say so explicitly\n(absent, never fabricated); rights-held indicators are marked held.","operationId":"country_profile_v2_countries__iso3__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"iso3","in":"path","required":true,"schema":{"type":"string","title":"Iso3"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GovernedRowsEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/assets/sections":{"get":{"tags":["assets"],"summary":"Section Catalogue","description":"Catalogue of asset-profile sections with live rights per entry.","operationId":"section_catalogue_v2_assets_sections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"asset_kind":{"type":"string"},"evidence_class":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"licence":{"type":"string"},"commercial_status":{"type":"string"},"serving":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/assets/{asset_id}/profile":{"get":{"tags":["assets"],"summary":"Asset Profile","description":"Every risk/context section that knows this asset id (graph ids:\noim_gen_*, oim_sub_*, PRIS-*, ...). Absent sections return\npresent=false; rights-held sections are named but not served.","operationId":"asset_profile_v2_assets__asset_id__profile_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SectionedProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/entities/sections":{"get":{"tags":["entities"],"summary":"Section Catalogue","operationId":"section_catalogue_v2_entities_sections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"description":{"type":"string"},"evidence_class":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}},"licence":{"type":"string"},"commercial_status":{"type":"string"},"serving":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/entities/{lei}/profile":{"get":{"tags":["entities"],"summary":"Entity Profile","description":"Corporate profile for one LEI. Sections the LEI is absent from\nreturn present=false. Name-joined sections (sanctions) disclose the\njoin method — a name match is weaker than an identifier match.","operationId":"entity_profile_v2_entities__lei__profile_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"lei","in":"path","required":true,"schema":{"type":"string","title":"Lei"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SectionedProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/entities/ownership-map":{"get":{"tags":["entities"],"summary":"Ownership Map","description":"Ownership & control map for one corporate group — the dataset behind\nthe /ownership page. Root = a CorporateEntity (by LEI, or best name match\non ?q=). Returns nodes (root, subsidiaries with controlled-MW rollups,\ntop assets by MW with fan-out capped into Aggregate nodes, grid zones)\nand edges with their EVIDENCE KIND on-row: SUBSIDIARY_OF = 'registry'\n(GLEIF relationship records, CC0); OPERATED_BY/OWNED_BY = 'stitched'\n(Kortex identity layer — manual curated batches; validation study 7).\nCapacity-weighted, fan-out capped exactly as displayed: nothing hidden\nthat isn't counted in an aggregate node.","operationId":"ownership_map_v2_entities_ownership_map_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"lei","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lei"}},{"name":"max_subs","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Max Subs"}},{"name":"max_assets","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Max Assets"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnershipMapResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/tables":{"get":{"tags":["tables"],"summary":"Table Catalogue","description":"Every servable public table with live rights. Exempt tables\n(staging, archives, intermediates, superseded versions) are working\nstate, not product, and are not listed — ops/serving_coverage.py\nshares the same exemption rules.","operationId":"table_catalogue_v2_tables_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TableCatalogueResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/tables/{name}":{"get":{"tags":["tables"],"summary":"Table Fetch","description":"Governed fetch with the full generic-surface contract: equality\nfilters (?col=v), range/pattern filters (?col__gte=v, __lte, __gt,\n__lt, __ne, __like), opt-in cursor pagination (?cursor=start), and\ningest deltas (?changed_since=ISO on tables with a delta_column).\nAll columns are returned.","operationId":"table_fetch_v2_tables__name__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":100,"title":"Limit"}},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Column to sort by (validated)","title":"Order By"},"description":"Column to sort by (validated)"},{"name":"desc","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Desc"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"'start' begins a paginated envelope; then pass next_cursor until null","title":"Cursor"},"description":"'start' begins a paginated envelope; then pass next_cursor until null"},{"name":"changed_since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO timestamp; rows Kortex ingested/updated since (tables with a delta_column only)","title":"Changed Since"},"description":"ISO timestamp; rows Kortex ingested/updated since (tables with a delta_column only)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TableRowsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/reference/countries":{"get":{"tags":["Reference"],"summary":"List Countries","description":"Country crosswalk — ISO codes, names, aliases.","operationId":"list_countries_v2_reference_countries_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Search by name","title":"Q"},"description":"Search by name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"iso2":{"type":"string"},"iso3":{"type":"string"},"name_en":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/reference/grids":{"get":{"tags":["Reference"],"summary":"Grid Zones","description":"All 364 grid zones with basic metadata.","operationId":"grid_zones_v2_reference_grids_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"grid_id":{"type":"string"},"zone_key":{"type":"string"},"name":{"type":"string"},"country_code":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}}}}},"/v2/reference/fuels":{"get":{"tags":["Reference"],"summary":"Fuel Types","description":"Fuel type taxonomy with generator counts.","operationId":"fuel_types_v2_reference_fuels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"fuel":{"type":"string"},"count":{"type":"integer"},"total_mw":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}}}}},"/v2/reference/register":{"get":{"tags":["Reference"],"summary":"Data Register","description":"Complete platform data register — all tables, columns, and node types.","operationId":"data_register_v2_reference_register_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"postgis":{"type":"object","properties":{"total_tables":{"type":"integer"},"total_columns":{"type":"integer"},"hypertables":{"type":"object","properties":{"aircraft_positions":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"cams_monthly":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"carbon_prices_ts":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"commodity_prices":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"credit_spreads":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"ct_emissions_monthly":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"eia_demand":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"eia_generation":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"eia_generation_hourly":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"eia_interchange":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"ember_eu_prices":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"ember_monthly":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"entsoe_flow":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"entsoe_generation":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"entsoe_imbalance_price":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"entsoe_load":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"entsoe_price":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"financial_rates":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"fire_hotspots":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"fred_observations":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"fx_rates_daily":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"gridstatus_prices_hourly":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"ntl_changes":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"ntl_derived":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"ntl_grid_005":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"ntl_infrastructure":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"ntl_zone_stats":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"s5p_observations":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"stock_indices":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"tso_demand":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"tso_generation":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"tso_prices":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"usage_events":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"vessel_positions":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"water_storage_generator_monthly":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"water_storage_monthly":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"weather_cells":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true},"weather_daily":{"type":"object","properties":{"chunks":{"type":"integer"},"approx_rows":{"type":"integer"}},"additionalProperties":true}},"additionalProperties":true},"views":{"type":"array","items":{"type":"string"}},"tables":{"type":"object","properties":{"_bf_top200":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_canon_snapshot":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_cleaned_countries":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_country_phaseout":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_country_stakeholders":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_excluded_iso3":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_gem_grid_stitch":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_hydro_stitch":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_orkora_digital":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_orkora_sites":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_retire_candidates":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_site_gens":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_ss1_raw":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_ss2_geo":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_ss3_attested":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_stage_zone_book":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_stakeholders":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_sw_gens":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_sw_universe":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_tmp_mg_canon":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_tmp_mg_gem":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_tso_grid_map":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_vacant_nuclear_aug":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_zone_gap":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"_zone_price_tier":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"adb_projects":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"aiddata_gcdf":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"aiddata_gcdf_locations":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"aiddata_locations":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"aircraft_positions":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"airports_geo":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_aiddata_infrastructure":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_air_connectivity":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_anomalous_generators":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_asset_to_revenue":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_b_revenue":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_ba_genmix_evolution":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_ba_interchange":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_cable_connectivity":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_canonical_changes":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_canonical_events":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_capacity_changes":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_capacity_deviation":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_capacity_factor":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_capacity_factor_trends":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_capacity_ground_truth":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_capacity_pipeline":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_capacity_verification":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_capture_decline":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_carbon_exposed_v2":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_cascading_failure":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_cems_cf":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_cems_cf_decline":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_clean_hours":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_clean_share_global":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_climate_energy_nexus":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_commodity_trends":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_competes_with":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_compound_hazard":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_conflict_intensity":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_conflict_proximity":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_conflict_substations":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_consolidated_revenue":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_consolidated_revenue_stale_20260704":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_construction_windows":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_cooling_validation":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_cooling_water":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_corporate_concentration":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_corporate_hierarchy":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_corporate_revenue":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_corridor_money":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_counterparty_risk":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_counterparty_risk_v2":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_cross_border_flows":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_cross_border_flows_grid":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_culture":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_cyber_risk":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_dam_water_risk":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_decarbonisation":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"analytics_decommission_check":{"type":"object","properties":{"size":{"type":"string"},"size_bytes":{"type":"integer"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"position":{"type":"integer"},"nullable":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true},"memgraph":{"type":"object","properties":{"total_nodes":{"type":"integer"},"total_edges":{"type":"integer"},"node_labels":{"type":"object","properties":{"CorporateEntity":{"type":"integer"},"TransmissionLine":{"type":"integer"},"WaterReservoir":{"type":"integer"},"Substation":{"type":"integer"},"Mast":{"type":"integer"},"Pipeline":{"type":"integer"},"MineralDeposit":{"type":"integer"},"Emitter":{"type":"integer"},"WaterWell":{"type":"integer"},"Junction":{"type":"integer"},"Generator":{"type":"integer"},"Transformer":{"type":"integer"},"PetroleumSite":{"type":"integer"},"WaterTower":{"type":"integer"},"Switch":{"type":"integer"},"Airport":{"type":"integer"},"WastewaterPlant":{"type":"integer"},"Dam":{"type":"integer"},"QueueProject":{"type":"integer"},"WaterTreatmentPlant":{"type":"integer"},"TelecomBuilding":{"type":"integer"},"PumpingStation":{"type":"integer"},"PipelineFeature":{"type":"integer"},"Company":{"type":"integer"},"TelecomCable":{"type":"integer"},"WorldBankProject":{"type":"integer"},"Compensator":{"type":"integer"},"UraniumDeposit":{"type":"integer"},"DataCentre":{"type":"integer"},"Port":{"type":"integer"},"FuelCycleFacility":{"type":"integer"},"Reactor":{"type":"integer"},"Grid":{"type":"integer"},"Jurisdiction":{"type":"integer"},"BathymetryProfile":{"type":"integer"},"DeploymentSite":{"type":"integer"},"OceanThermal":{"type":"integer"},"SeismicHazard":{"type":"integer"},"CycloneExposure":{"type":"integer"},"BalancingAuthority":{"type":"integer"},"TSO":{"type":"integer"},"SynchronousArea":{"type":"integer"},"DataSource":{"type":"integer"},"CentralBank":{"type":"integer"},"IceMassZone":{"type":"integer"},"Meta":{"type":"integer"}},"additionalProperties":true},"edge_types":{"type":"object","properties":{"LOCATED_IN":{"type":"integer"},"HEADQUARTERED_IN":{"type":"integer"},"ENDPOINT_OF":{"type":"integer"},"NEAREST_SUBSTATION":{"type":"integer"},"NESTED_IN":{"type":"integer"},"OPERATED_BY":{"type":"integer"},"PIPELINE_NEXT":{"type":"integer"},"WEATHER_CORRELATED":{"type":"integer"},"NEXT_ON_LINE":{"type":"integer"},"SUBSIDIARY_OF":{"type":"integer"},"NEAREST_PORT":{"type":"integer"},"PART_OF":{"type":"integer"},"SOURCED_FROM":{"type":"integer"},"CONNECTS_TO":{"type":"integer"},"MANAGED_BY":{"type":"integer"},"IMPOUNDS":{"type":"integer"},"ULTIMATE_PARENT":{"type":"integer"},"DIRECT_PARENT":{"type":"integer"},"OPERATES_IN":{"type":"integer"},"FLIES_TO":{"type":"integer"},"PUMPS_TO":{"type":"integer"},"OWNED_BY":{"type":"integer"},"DISCHARGES_TO":{"type":"integer"},"IS_SUBFUND_OF":{"type":"integer"},"QUEUED_AT":{"type":"integer"},"DRAWS_FROM":{"type":"integer"},"SUPPLIES_WATER":{"type":"integer"},"COMPETES_WITH":{"type":"integer"},"CABLE_CONNECTS":{"type":"integer"},"SAILS_TO":{"type":"integer"},"FUELLED_BY":{"type":"integer"},"INTERCONNECTING_UTILITY":{"type":"integer"},"SAME_AS":{"type":"integer"},"TRADES_WITH":{"type":"integer"},"PIPELINE_FEEDS":{"type":"integer"},"SUPPLIES_COOLING":{"type":"integer"},"DAM_POWERS":{"type":"integer"},"ON_SAME_RIVER":{"type":"integer"},"HAS_CAPACITY_IN":{"type":"integer"},"INTERNATIONAL_BRANCH_OF":{"type":"integer"},"IS_FEEDER_TO":{"type":"integer"},"INTERCONNECTS":{"type":"integer"},"PARENT_GROUP_OF":{"type":"integer"},"HAS_NETWORK_IN":{"type":"integer"},"DEVELOPED_BY":{"type":"integer"},"ELECTRICITY_FLOWS":{"type":"integer"},"LANDS_AT":{"type":"integer"},"GOVERNED_BY":{"type":"integer"},"MEMBER_OF":{"type":"integer"},"HAS_BATHYMETRY":{"type":"integer"},"HAS_OCEAN_THERMAL":{"type":"integer"},"IN_EEZ":{"type":"integer"},"HAS_CYCLONE":{"type":"integer"},"DOWNSTREAM_OF":{"type":"integer"},"HAS_SEISMIC":{"type":"integer"},"BALANCES":{"type":"integer"},"MONETARY_AUTHORITY_OF":{"type":"integer"},"REGULATED_BY":{"type":"integer"}},"additionalProperties":true},"node_label_count":{"type":"integer"},"edge_type_count":{"type":"integer"},"index_count":{"type":"integer"},"memory_gib":{"type":"number"},"allocation_limit_gib":{"type":"number"}},"additionalProperties":true},"cron_jobs":{"type":"integer"}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}}}}},"/v2/spatial/generators":{"get":{"tags":["Spatial"],"summary":"Viewport Generators","description":"Generators within a map viewport.\n\n64% of rows carry NULL output_mw — `output_mw >= x` alone would exclude\nthem at EVERY threshold including 0, so unknown-capacity plants could\nnever appear at any zoom. They pass when min_mw <= 0 (full-detail zooms).","operationId":"viewport_generators_v2_spatial_generators_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"min_mw","in":"query","required":false,"schema":{"type":"number","description":"Minimum capacity MW","default":100,"title":"Min Mw"},"description":"Minimum capacity MW"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"operator":{"type":"string"},"fuel_source":{"type":"string"},"output_mw":{"type":"number"},"status":{"type":"string"},"lng":{"type":"number"},"lat":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/substations":{"get":{"tags":["Spatial"],"summary":"Viewport Substations","description":"Substations within a map viewport. Filter by TSO/DSO tier.","operationId":"viewport_substations_v2_spatial_substations_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"min_kv","in":"query","required":false,"schema":{"type":"number","description":"Minimum voltage kV","default":110,"title":"Min Kv"},"description":"Minimum voltage kV"},{"name":"tier","in":"query","required":false,"schema":{"type":"string","description":"Filter by tier: TSO or DSO","title":"Tier"},"description":"Filter by tier: TSO or DSO"},{"name":"net_tier","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated network_tier filter (transmission | sub_transmission | distribution) — same per-zone/operator classification as /lines","title":"Net Tier"},"description":"Comma-separated network_tier filter (transmission | sub_transmission | distribution) — same per-zone/operator classification as /lines"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"default":3000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"operator":{"nullable":true},"voltage_kv":{"type":"number"},"sub_type":{"type":"string"},"tier":{"type":"string"},"network_tier":{"type":"string"},"lng":{"type":"number"},"lat":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/lines":{"get":{"tags":["Spatial"],"summary":"Viewport Lines","description":"Power lines within a map viewport.\n\nmin_km selects the long-haul backbone at continental/global zooms: ordering by\nvoltage alone lets dense short segments (e.g. European 380-400kV) exhaust the\nrow limit before other regions appear at all.","operationId":"viewport_lines_v2_spatial_lines_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"min_kv","in":"query","required":false,"schema":{"type":"number","description":"Minimum voltage kV (ignored when tier is set)","default":110,"title":"Min Kv"},"description":"Minimum voltage kV (ignored when tier is set)"},{"name":"min_km","in":"query","required":false,"schema":{"type":"number","description":"Minimum line length km (0 = no filter)","default":0,"title":"Min Km"},"description":"Minimum line length km (0 = no filter)"},{"name":"tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated network_tier filter (transmission | sub_transmission | distribution). Uses the per-zone/operator classification (network_tier_method) — higher fidelity than a global voltage floor, which mislabels e.g. Scottish 132kV transmission. When set, min_kv is ignored.","title":"Tier"},"description":"Comma-separated network_tier filter (transmission | sub_transmission | distribution). Uses the per-zone/operator classification (network_tier_method) — higher fidelity than a global voltage floor, which mislabels e.g. Scottish 132kV transmission. When set, min_kv is ignored."},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance in degrees","default":0.01,"title":"Simplify"},"description":"Simplification tolerance in degrees"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"default":5000,"title":"Limit"}},{"name":"money","in":"query","required":false,"schema":{"type":"boolean","description":"Attach the zone network wedge to each line (analytics_zone_wire_money, gpkg_216): wedge_usd_mwh = demand-weighted retail−wholesale of the line's zone. GRAIN DISCLOSURE: geometry is per-line, money is per-ZONE — per-line cashflow is not computed anywhere in Kortex. Basis columns (wholesale_basis/retail_basis) ride on-row; lines in unpriced zones return NULL wedge.","default":false,"title":"Money"},"description":"Attach the zone network wedge to each line (analytics_zone_wire_money, gpkg_216): wedge_usd_mwh = demand-weighted retail−wholesale of the line's zone. GRAIN DISCLOSURE: geometry is per-line, money is per-ZONE — per-line cashflow is not computed anywhere in Kortex. Basis columns (wholesale_basis/retail_basis) ride on-row; lines in unpriced zones return NULL wedge."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"nullable":true},"voltage_kv":{"type":"number"},"operator":{"nullable":true},"length_km":{"type":"number"},"network_tier":{"type":"string"},"network_tier_method":{"type":"string"},"zone_key":{"type":"string"},"state_key":{"nullable":true},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"number"}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/pipelines":{"get":{"tags":["Spatial"],"summary":"Viewport Pipelines","description":"Pipelines within a map viewport. min_km selects the long-haul backbone\nat continental/global zooms (results are already longest-first). zone_key\n(US state, point-on-surface) joins /network-economics for the gas layers.","operationId":"viewport_pipelines_v2_spatial_pipelines_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"min_km","in":"query","required":false,"schema":{"type":"number","description":"Minimum pipeline length km (0 = no filter)","default":0,"title":"Min Km"},"description":"Minimum pipeline length km (0 = no filter)"},{"name":"substance","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by substance (gas | oil | water | heat | sewage | fuel …). Omit for all pipelines.","title":"Substance"},"description":"Filter by substance (gas | oil | water | heat | sewage | fuel …). Omit for all pipelines."},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.01,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25000,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"operator":{"type":"string"},"substance":{"type":"string"},"length_km":{"type":"number"},"zone_key":{"nullable":true},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"number"}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/telecom-cables":{"get":{"tags":["Spatial"],"summary":"Viewport Telecom Cables","description":"Telecom cables within a viewport — terrestrial (OpenInfraMap) UNION\nsubmarine (OSM seamark/communication tags, gpkg_230). Both ODbL-cleared;\nkind + source on-row. Submarine rows are OSM way SEGMENTS, not whole\nlogical cable systems — no system-completeness claim.","operationId":"viewport_telecom_cables_v2_spatial_telecom_cables_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.01,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":15000,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"operator":{"type":"string"},"length_km":{"type":"number"},"kind":{"type":"string"},"source":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"number"}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/ports":{"get":{"tags":["Spatial"],"summary":"Viewport Ports","description":"Ports within a viewport or all ports.","operationId":"viewport_ports_v2_spatial_ports_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":false,"schema":{"type":"string","description":"Bounding box (optional)","title":"Bbox"},"description":"Bounding box (optional)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"harbor_size":{"type":"string"},"lng":{"type":"number"},"lat":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/dams":{"get":{"tags":["Spatial"],"summary":"Viewport Dams","description":"Dams within a viewport.","operationId":"viewport_dams_v2_spatial_dams_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":false,"schema":{"type":"string","description":"Bounding box (optional)","title":"Bbox"},"description":"Bounding box (optional)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":2000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"country":{"type":"string"},"dam_height_m":{"type":"integer"},"year_built":{"type":"integer"},"lng":{"type":"number"},"lat":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/airports":{"get":{"tags":["Spatial"],"summary":"Viewport Airports","description":"Airports within a viewport.","operationId":"viewport_airports_v2_spatial_airports_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"type_filter","in":"query","required":false,"schema":{"type":"string","description":"large_airport, medium_airport, small_airport","default":"large_airport","title":"Type Filter"},"description":"large_airport, medium_airport, small_airport"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"iata_code":{"type":"string"},"type":{"type":"string"},"iso_country":{"type":"string"},"lng":{"type":"number"},"lat":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/emitters":{"get":{"tags":["Spatial"],"summary":"Viewport Emitters","description":"Climate TRACE emitters within a viewport.","operationId":"viewport_emitters_v2_spatial_emitters_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"min_capacity","in":"query","required":false,"schema":{"type":"number","description":"Minimum capacity. CAUTION: capacity units differ per sector (MW for power, USD for manufacturing…) — a global floor silently hides whole sectors (100 used to hide 47% of power plants). Prefer sector.","default":0,"title":"Min Capacity"},"description":"Minimum capacity. CAUTION: capacity units differ per sector (MW for power, USD for manufacturing…) — a global floor silently hides whole sectors (100 used to hide 47% of power plants). Prefer sector."},{"name":"sector","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated sector filter","title":"Sector"},"description":"Comma-separated sector filter"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"sector":{"type":"string"},"subsector":{"type":"string"},"country":{"type":"string"},"capacity":{"type":"number"},"capacity_units":{"type":"string"},"co2_tonnes_12mo":{"type":"number"},"co2_window":{"type":"string"},"lng":{"type":"number"},"lat":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/minerals":{"get":{"tags":["Spatial"],"summary":"Viewport Minerals","description":"USGS mineral deposits within a viewport.\n\n304k rows, 85% in the US (source bias) — prod_size/dev_status let the\nclient select a deterministic 'majors' subset at low zoom instead of a\ndep_id-ordered truncation. Ordering is importance-first (L > M > S) so any\ncap hit drops the least significant deposits.","operationId":"viewport_minerals_v2_spatial_minerals_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"commodity","in":"query","required":false,"schema":{"type":"string","description":"Filter by primary commodity","title":"Commodity"},"description":"Filter by primary commodity"},{"name":"prod_size","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated production size codes (L,M,S…)","title":"Prod Size"},"description":"Comma-separated production size codes (L,M,S…)"},{"name":"dev_status","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated dev status (Producer, Past Producer…)","title":"Dev Status"},"description":"Comma-separated dev status (Producer, Past Producer…)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"commodity":{"type":"string"},"type":{"type":"string"},"prod_size":{"type":"string"},"dev_status":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/petroleum":{"get":{"tags":["Spatial"],"summary":"Viewport Petroleum","description":"Petroleum sites within a viewport.","operationId":"viewport_petroleum_v2_spatial_petroleum_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"nullable":true},"operator":{"nullable":true},"ref":{"nullable":true},"lng":{"type":"number"},"lat":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/conflict":{"get":{"tags":["Spatial"],"summary":"Viewport Conflict","description":"UCDP conflict events within a viewport.","operationId":"viewport_conflict_v2_spatial_conflict_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"min_year","in":"query","required":false,"schema":{"type":"integer","description":"Minimum year","default":2020,"title":"Min Year"},"description":"Minimum year"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"year":{"type":"integer"},"type_of_violence":{"type":"integer"},"side_a":{"type":"string"},"side_b":{"type":"string"},"fatalities":{"type":"integer"},"country":{"type":"string"},"location":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/ixps":{"get":{"tags":["Spatial"],"summary":"Viewport Ixps","description":"Internet exchange points and peering facilities.","operationId":"viewport_ixps_v2_spatial_ixps_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":false,"schema":{"type":"string","description":"Bounding box (optional)","title":"Bbox"},"description":"Bounding box (optional)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":6000,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/datacentres":{"get":{"tags":["Spatial"],"summary":"Viewport Datacentres","description":"Data centres: PeeringDB facilities (CC BY-SA 4.0, site precision) +\nKortex-curated hyperscaler campus announcements (city/state centroids —\ngranularity disclosed per-row via `precision`). Serving table\ndatacentres_geo is built by ingest/gpkg_207_datacentres.py; ids match\nDataCentre graph nodes. Ordered by network count (importance proxy) so a\ncap hit drops the least-connected facilities first.","operationId":"viewport_datacentres_v2_spatial_datacentres_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":false,"schema":{"type":"string","description":"Bounding box (optional)","title":"Bbox"},"description":"Bounding box (optional)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":6000,"default":3000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"operator_name":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"iso2":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"net_count":{"type":"integer"},"ix_count":{"type":"integer"},"capacity_mw":{"nullable":true},"lifecycle_status":{"type":"string"},"precision":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/development":{"get":{"tags":["Spatial"],"summary":"Viewport Development","description":"World Bank development project locations.","operationId":"viewport_development_v2_spatial_development_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"project_id":{"type":"string"},"name":{"type":"string"},"country":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/voronoi/tso":{"get":{"tags":["Spatial"],"summary":"Viewport Voronoi Tso","description":"TSO Voronoi cells within a viewport. 135 attributes per cell. Use snap > 0 for large viewports.","operationId":"viewport_voronoi_tso_v2_spatial_voronoi_tso_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"color_by","in":"query","required":false,"schema":{"type":"string","description":"Column to color cells by","default":"wholesale_usd_mwh","title":"Color By"},"description":"Column to color cells by"},{"name":"snap","in":"query","required":false,"schema":{"type":"number","description":"ST_SnapToGrid precision (0 = raw geometry)","default":0.0,"title":"Snap"},"description":"ST_SnapToGrid precision (0 = raw geometry)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"default":40000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"sub_id":{"type":"string"},"zone_key":{"type":"string"},"iso3":{"type":"string"},"area_km2":{"type":"number"},"gen_mw_total":{"type":"number"},"gen_count":{"type":"number"},"fossil_pct":{"type":"number"},"clean_pct":{"type":"number"},"wholesale_usd_mwh":{"type":"number"},"retail_usd_mwh":{"type":"number"},"wholesale_basis":{"type":"string"},"wholesale_source":{"type":"string"},"retail_basis":{"type":"string"},"retail_source":{"type":"string"},"water_stress_score":{"type":"number"},"energy_security_score":{"type":"number"},"conflict_events":{"type":"number"},"gdp_pc_ppp":{"type":"number"},"hdi":{"type":"number"},"queue_mw_total":{"nullable":true},"grid_stress_empirical":{"type":"number"},"total_corridor_mw":{"type":"number"},"color_value":{"type":"number"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"array","items":{}}}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/voronoi/dso":{"get":{"tags":["Spatial"],"summary":"Viewport Voronoi Dso","description":"DSO Voronoi cells within a viewport. 156 attributes per cell. Only at high zoom.","operationId":"viewport_voronoi_dso_v2_spatial_voronoi_dso_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"color_by","in":"query","required":false,"schema":{"type":"string","description":"Column to color cells by","default":"wholesale_usd_mwh","title":"Color By"},"description":"Column to color cells by"},{"name":"snap","in":"query","required":false,"schema":{"type":"number","description":"ST_SnapToGrid precision (0 = raw geometry)","default":0.0,"title":"Snap"},"description":"ST_SnapToGrid precision (0 = raw geometry)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":30000,"default":20000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"sub_id":{"type":"string"},"zone_key":{"type":"string"},"iso3":{"type":"string"},"wholesale_usd_mwh":{"type":"number"},"retail_usd_mwh":{"type":"number"},"wholesale_basis":{"type":"string"},"wholesale_source":{"type":"string"},"retail_basis":{"type":"string"},"retail_source":{"type":"string"},"energy_security_score":{"type":"number"},"color_value":{"type":"number"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"array","items":{}}}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/voronoi/tso/{sub_id}":{"get":{"tags":["Spatial"],"summary":"Voronoi Tso Detail","description":"Full 135-column detail for a single TSO Voronoi cell.","operationId":"voronoi_tso_detail_v2_spatial_voronoi_tso__sub_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"sub_id":{"type":"string"},"zone_key":{"type":"string"},"iso3":{"type":"string"},"area_km2":{"type":"number"},"gdp_pc_ppp":{"type":"number"},"gdp_country":{"type":"string"},"gen_mw_total":{"type":"number"},"gen_mw_coal":{"type":"number"},"gen_mw_gas":{"type":"number"},"gen_mw_oil":{"type":"number"},"gen_mw_nuclear":{"type":"number"},"gen_mw_hydro":{"type":"number"},"gen_mw_wind":{"type":"number"},"gen_mw_solar":{"type":"number"},"gen_mw_bio":{"type":"number"},"gen_count":{"type":"number"},"co2_facilities":{"type":"number"},"co2_capacity_mw":{"type":"number"},"conflict_events":{"type":"number"},"conflict_deaths":{"type":"number"},"mineral_deposits":{"nullable":true},"mineral_commodities":{"nullable":true},"port_dist_km":{"type":"number"},"nearest_port":{"type":"string"},"airport_dist_km":{"type":"number"},"nearest_airport":{"type":"string"},"cable_dist_km":{"type":"number"},"nuclear_reactors":{"nullable":true},"nuclear_net_mwe":{"nullable":true},"nuclear_gross_mwe":{"nullable":true},"dam_count":{"nullable":true},"dam_hydro_mw":{"nullable":true},"dam_reservoir_mcm":{"nullable":true},"pipeline_km":{"type":"number"},"pipeline_gas_km":{"type":"number"},"pipeline_oil_km":{"type":"number"},"protected_area_overlap":{"type":"boolean"},"petroleum_wells":{"nullable":true},"water_stress_score":{"type":"number"},"water_stress_cat":{"type":"string"},"drought_risk_score":{"type":"number"},"volcano_count":{"nullable":true},"nearest_volcano_km":{"type":"number"},"eia_plants":{"type":"integer"},"telecom_cable_km":{"nullable":true},"solar_ghi_kwh":{"type":"number"},"wind_speed_ms":{"type":"number"},"storm_events":{"nullable":true},"heritage_sites":{"nullable":true},"nearest_heritage_km":{"type":"number"},"fossil_pct":{"type":"number"},"clean_pct":{"type":"number"},"carbon_intensity":{"type":"number"},"cooling_risk_score":{"type":"number"},"transition_pressure":{"type":"number"},"infra_density_score":{"type":"number"},"seismic_events":{"nullable":true},"seismic_max_mag":{"nullable":true},"cyclone_tracks":{"nullable":true},"cyclone_max_wind_kts":{"nullable":true},"queue_projects":{"type":"integer"},"queue_mw_total":{"type":"number"},"queue_mw_solar":{"type":"number"},"queue_mw_wind":{"type":"number"},"queue_mw_storage":{"type":"number"},"wholesale_usd_mwh":{"type":"number"},"retail_usd_mwh":{"type":"number"},"wgi_political_stability":{"type":"number"},"wgi_regulatory_quality":{"type":"number"},"wgi_rule_of_law":{"type":"number"},"idx_grid_stress":{"type":"number"},"idx_stranding_risk":{"nullable":true},"hdi":{"type":"number"},"pjm_zone":{"type":"string"},"pjm_congestion_usd":{"type":"number"},"pjm_lmp_usd":{"type":"number"},"pjm_congestion_pct":{"type":"number"},"net_import_twh":{"nullable":true},"flow_status":{"nullable":true},"price_demand_corr":{"nullable":true}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/voronoi/dso/{sub_id}":{"get":{"tags":["Spatial"],"summary":"Voronoi Dso Detail","description":"Full 156-column detail for a single DSO Voronoi cell.","operationId":"voronoi_dso_detail_v2_spatial_voronoi_dso__sub_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"string","title":"Sub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"sub_id":{"type":"string"},"zone_key":{"type":"string"},"iso3":{"type":"string"},"area_km2":{"type":"number"},"tso_sub_id":{"type":"string"},"building_count":{"nullable":true},"building_area_m2":{"nullable":true},"n_residential":{"nullable":true},"n_commercial":{"nullable":true},"n_industrial":{"nullable":true},"n_mega":{"nullable":true},"area_residential":{"nullable":true},"area_commercial":{"nullable":true},"area_industrial":{"nullable":true},"est_solar_kw":{"nullable":true},"est_heating_mwh_yr":{"nullable":true},"total_volume_m3":{"nullable":true},"height_p50":{"nullable":true},"height_p90":{"nullable":true},"avg_rwi":{"type":"number"},"rwi_points":{"type":"integer"},"dc_facilities":{"nullable":true},"dc_net_count":{"nullable":true},"gdp_pc_ppp":{"type":"number"},"gdp_country":{"type":"string"},"conflict_events":{"type":"integer"},"conflict_deaths":{"type":"integer"},"port_dist_km":{"type":"number"},"airport_dist_km":{"type":"number"},"cable_dist_km":{"type":"number"},"tso_gen_mw_total":{"nullable":true},"tso_co2_facilities":{"type":"integer"},"demand_density_mwh_km2":{"nullable":true},"solar_potential_kw_km2":{"nullable":true},"commercial_ratio":{"nullable":true},"urbanisation_score":{"nullable":true},"raw_building_count":{"type":"integer"},"raw_building_area_m2":{"type":"number"},"raw_n_shed":{"type":"integer"},"raw_n_residential":{"type":"integer"},"raw_n_large_res":{"type":"integer"},"raw_n_commercial":{"type":"integer"},"raw_n_large_comm":{"type":"integer"},"raw_n_industrial":{"type":"integer"},"raw_n_mega":{"type":"integer"},"raw_area_shed":{"type":"number"},"raw_area_residential":{"type":"number"},"raw_area_large_res":{"type":"number"},"raw_area_commercial":{"type":"number"},"raw_area_large_comm":{"type":"number"},"raw_area_industrial":{"type":"number"},"raw_area_mega":{"type":"number"},"raw_height_avg":{"type":"number"},"raw_height_max":{"type":"number"},"raw_height_count":{"type":"integer"},"raw_avg_confidence":{"type":"number"},"raw_est_solar_kw":{"type":"number"},"raw_est_heating_mwh_yr":{"type":"number"},"wb_projects":{"nullable":true},"wb_commitment_usd":{"nullable":true},"china_projects":{"nullable":true},"china_investment_usd":{"nullable":true},"cams_no2":{"type":"number"},"cams_so2":{"type":"number"},"cams_co":{"type":"number"},"ghsl_population":{"type":"number"},"ghsl_pop_density_km2":{"type":"number"},"ghsl_built_m2_2000":{"type":"number"},"ghsl_built_m2_2020":{"type":"number"},"ghsl_built_delta_m2":{"type":"number"},"ghsl_urbanisation_pct":{"type":"number"},"chirps_annual_mm":{"nullable":true},"chirps_max_month_mm":{"nullable":true},"chirps_min_month_mm":{"nullable":true},"chirps_wet_months":{"nullable":true},"chirps_dry_months":{"nullable":true},"chirps_seasonality":{"nullable":true},"electrification_gap":{"nullable":true},"dark_demand_flag":{"type":"boolean"},"dark_demand_score":{"type":"number"}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/money-stack":{"get":{"tags":["Spatial"],"summary":"Viewport Money Stack","description":"Grid Money Stack (gpkg_194) on zone polygons — what generation earned vs\nwhat consumers paid, and the wedge the network layer captures between them.\nfidelity_score + retail_source ride on-row (some zones are imputed).","operationId":"viewport_money_stack_v2_spatial_money_stack_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.05,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":400,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"zone_key":{"type":"string"},"grid_id":{"type":"string"},"name":{"type":"string"},"generation_revenue_m":{"type":"integer"},"consumer_spend_m":{"type":"integer"},"wedge_m":{"type":"integer"},"wedge_pct":{"type":"number"},"avg_wholesale_usd_mwh":{"type":"number"},"avg_retail_usd_mwh":{"type":"number"},"retail_source":{"type":"string"},"fidelity_score":{"type":"integer"},"conservation_flag":{"type":"boolean"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"array","items":{}}}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/network-economics":{"get":{"tags":["Spatial"],"summary":"Network Economics","description":"Per-zone network economics — no geometry, joined client-side onto the\nline/pipeline layers' zone_key so geometry fetches stay cacheable.","operationId":"network_economics_v2_spatial_network_economics_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"network","in":"query","required":false,"schema":{"type":"string","description":"Which network's zone economics to return: electricity | gas. Uniform schema across networks (the network-economics framework, ops/workstreams/network_economics_framework.md): upstream_price = zonal wholesale (electricity: DA market; gas: US city gate), delivered_price = end-consumer price, wedge = delivered − upstream (the delivery system's capture per unit), share_pct = wedge/delivered (unit-free — comparable ACROSS networks). unit discloses the native denomination. GRAIN: economics are per-ZONE (electricity: market zone; gas: US state); per-line cashflow is not computed anywhere in Kortex. Negative wedge = delivered price capped below wholesale — a real finding, disclosed via basis columns, not an error. Oil and water networks are excluded by design: oil lacks a zonal wholesale/retail pair (crack spread confounds; FERC tariffs not ingested), water has no wholesale level (tariffs not ingested).","default":"electricity","title":"Network"},"description":"Which network's zone economics to return: electricity | gas. Uniform schema across networks (the network-economics framework, ops/workstreams/network_economics_framework.md): upstream_price = zonal wholesale (electricity: DA market; gas: US city gate), delivered_price = end-consumer price, wedge = delivered − upstream (the delivery system's capture per unit), share_pct = wedge/delivered (unit-free — comparable ACROSS networks). unit discloses the native denomination. GRAIN: economics are per-ZONE (electricity: market zone; gas: US state); per-line cashflow is not computed anywhere in Kortex. Negative wedge = delivered price capped below wholesale — a real finding, disclosed via basis columns, not an error. Oil and water networks are excluded by design: oil lacks a zonal wholesale/retail pair (crack spread confounds; FERC tariffs not ingested), water has no wholesale level (tariffs not ingested)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/NetworkEconomicsRow"},"title":"Response 200 Network Economics V2 Spatial Network Economics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/weather-portfolio":{"get":{"tags":["Spatial"],"summary":"Weather Portfolio","description":"Per-operator weather-concentration structure (gpkg_229, measured):\nhow many EFFECTIVE independent weather positions a renewable portfolio\nholds. N_eff = 1/(w'Rw) over DIRECT pairwise MEASURED correlations (no\ntransitive chaining — closure merges continents): ERA5 daily anomalies\n2015-2025, Pearson r, same-cell r=1.0, negatives floored at zero; basis\nmeasured_corr_v1 on-row (v1 distance-band heuristic retired 2026-07-13).\nCOVERAGE: figures describe assets IN THE KORTEX GRAPH (counts + MW\non-row) — no claim of complete portfolios. Meteorological co-movement\nstructure, never firm/deliverable capacity.","operationId":"weather_portfolio_v2_spatial_weather_portfolio_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"fuel","in":"query","required":false,"schema":{"type":"string","description":"Wind | Solar","default":"Wind","title":"Fuel"},"description":"Wind | Solar"},{"name":"min_mw","in":"query","required":false,"schema":{"type":"number","description":"Minimum in-graph portfolio MW","default":500,"title":"Min Mw"},"description":"Minimum in-graph portfolio MW"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WeatherPortfolioItem"},"title":"Response 200 Weather Portfolio V2 Spatial Weather Portfolio Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/clean-hours":{"get":{"tags":["Spatial"],"summary":"Clean Hours","description":"A clean year can have borrowed hours — hourly clean-supply structure.","operationId":"clean_hours_v2_spatial_clean_hours_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"grid","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Grid code (e.g. DE, NO-NO3). Omit for the summary list. Per grid: hourly 2024 arrays (clean share of domestic generation, demand MW, net import MW, day-ahead price) + the metrics a 24/7 load cares about. clean incl. hydro w/ pumped (disclosed); firm-clean matches the siting definition. Net imports carry NO fuel attribution (meshed-flow tracing out of scope). hourly_matched_coverage_pct = share of a flat 300 MW load coverable from domestic clean SURPLUS (clean minus existing demand) hour by hour — illustrative, not a procurement calculation.","title":"Grid"},"description":"Grid code (e.g. DE, NO-NO3). Omit for the summary list. Per grid: hourly 2024 arrays (clean share of domestic generation, demand MW, net import MW, day-ahead price) + the metrics a 24/7 load cares about. clean incl. hydro w/ pumped (disclosed); firm-clean matches the siting definition. Net imports carry NO fuel attribution (meshed-flow tracing out of scope). hourly_matched_coverage_pct = share of a flat 300 MW load coverable from domestic clean SURPLUS (clean minus existing demand) hour by hour — illustrative, not a procurement calculation."},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Calendar year. Omit: summary list returns the latest year per grid; detail returns the grid's latest built year.","title":"Year"},"description":"Calendar year. Omit: summary list returns the latest year per grid; detail returns the grid's latest built year."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CleanHoursSummaryItem"},"title":"Response 200 Clean Hours V2 Spatial Clean Hours Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/queue-cohorts":{"get":{"tags":["Spatial"],"summary":"Queue Cohorts","description":"The queue is not a pipeline — cohort outcomes of US interconnection\nrequests (LBNL Queued Up, end-2024 vintage — disclosed; end-2025 refresh\nis the declared update). One row per (submission-year cohort, technology\nfamily, region): counts + MW by outcome, IA-executed actives, median\nyears to operation/withdrawal. ACTIVE projects are right-censored —\nstill-in-queue, never failed. Hybrids count under their first technology;\nsecondary components (mw2/mw3) excluded (known LBNL limitation).","operationId":"queue_cohorts_v2_spatial_queue_cohorts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/QueueCohortItem"},"type":"array","title":"Response 200 Queue Cohorts V2 Spatial Queue Cohorts Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/spatial/water-portfolio":{"get":{"tags":["Spatial"],"summary":"Water Portfolio","description":"Diversified assets, one river — per-operator cooling-water system\nconcentration (gpkg_225). Hydrological cluster = level-6 Pfafstetter\nsub-basin UNION explicit ON_SAME_RIVER chains (transitivity meaningful:\nupstream/downstream shares drought exposure). FAIL-CLOSED coverage:\ninsufficient_coverage=true when <60% of the group's thermal MW carries a\ncooling link or <5 plants — those rows must be displayed as\nunder-evidenced, never ranked. largest_stress = max WRI Aqueduct baseline\nwater stress (0-5) among the largest system's cooling dams.\nVALIDATION: every judgeable US cooling edge was tested against the\nutility's own EIA-860 Schedule 6.2 filing (validation study 8) — the 35%\nthat contradicted the filing (dry/ocean/groundwater cooling) are\nquarantined and excluded here. Non-US edges remain inferred-unvalidated.","operationId":"water_portfolio_v2_spatial_water_portfolio_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"min_linked","in":"query","required":false,"schema":{"type":"integer","description":"Minimum water-linked plants","default":2,"title":"Min Linked"},"description":"Minimum water-linked plants"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WaterPortfolioItem"},"title":"Response 200 Water Portfolio V2 Spatial Water Portfolio Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/power-fibre":{"get":{"tags":["Spatial"],"summary":"Power Fibre","description":"Power and fibre rarely agree — per-zone power economics vs digital\nconnectivity (gpkg_226). Power side uses the siting screen's definitions\n(clean-firm = dispatchable low-carbon, canonical operational; EHV >=275kV\nreal topology; wholesale from the zone price rebuild with basis on-row).\nDigital side uses CLEARED sources only: PeeringDB facilities + curated\nhyperscalers, OSM telecom sites — no under-review cable datasets.\nnearest_dc_km measures from the zone's interior point (large zones:\nfacilities may cluster far from it — a feature: it measures the zone's\ninterior, where cheap land and power usually are).","operationId":"power_fibre_v2_spatial_power_fibre_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PowerFibreItem"},"type":"array","title":"Response 200 Power Fibre V2 Spatial Power Fibre Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/spatial/grid-criticality":{"get":{"tags":["Spatial"],"summary":"Grid Criticality","description":"Structural single points of failure in the mapped transmission\ntopology (gpkg_270): articulation substations — nodes whose removal\ndisconnects part of their network component — with severed-substation\nand attached-generation-MW severity, plus bridge-line counts.\nHONESTY: this is graph TOPOLOGY, not power flow. A cut vertex is not an\noutage forecast — re-dispatch, lower-voltage paths and lines missing\nfrom OSM/OIM all add real redundancy this cannot see. Screening-grade:\nwhich nodes DESERVE an N-1 look. Names are OSM-sourced and often absent\n(absence shown, never invented).","operationId":"grid_criticality_v2_spatial_grid_criticality_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO2 country filter (e.g. CN, US, DE)","title":"Country"},"description":"ISO2 country filter (e.g. CN, US, DE)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":150,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GridCriticalityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/submarine-cables-full":{"get":{"tags":["Spatial"],"summary":"Submarine Cables Full","description":"Complete global submarine cable systems (TeleGeography, 695 systems /\n1.76M km) — UNDER RIGHTS REVIEW (CC BY-NC-SA 3.0 historic; current terms\nunconfirmed). KEYED ACCESS ONLY: nginx passes the caller's own key and\ninjects no demo key, so anonymous requests receive 401 (the AIS/vessels\npattern). licence + commercial_status are on every row; this dataset is\nNEVER unioned into the cleared /telecom-cables layer and never feeds a\n'cleared sources only' surface. The cleared alternative (OSM) covers\n284k km but has no mid-ocean spans.","operationId":"submarine_cables_full_v2_spatial_submarine_cables_full_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.02,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"default":800,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"length_km":{"type":"number"},"color":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"evidence_class":{"type":"string"},"source":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"number"}}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/rivers":{"get":{"tags":["Spatial"],"summary":"Viewport Rivers","description":"River network (HydroSHEDS HydroRIVERS v1.0 — free incl. commercial\nwith attribution; GLOBAL — all 9 regions, 8.5M reaches, 35.9M km). Reaches carry mainstem id, stream order and mean\ndischarge; min_cms tiers the network for viewport scale the way\nvoltage tiers the grid. This is the geometry behind study 8's\nreach-level cooling-link confirmation.","operationId":"viewport_rivers_v2_spatial_rivers_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"min_cms","in":"query","required":false,"schema":{"type":"number","description":"Minimum mean discharge m3/s (tiers the network like line voltage)","default":10,"title":"Min Cms"},"description":"Minimum mean discharge m3/s (tiers the network like line voltage)"},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.01,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":12000,"default":6000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"main_riv":{"type":"integer"},"ord_stra":{"type":"integer"},"dis_av_cms":{"type":"number"},"length_km":{"type":"number"},"source":{"type":"string"},"evidence_class":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"number"}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/bathymetry":{"get":{"tags":["Spatial"],"summary":"Viewport Bathymetry","description":"Ocean depth grid (GEBCO 2024, public domain, attribution GEBCO\nCompilation Group): 0.1-degree block means of the 15-arc-second grid,\nocean cells only, deepest point per block preserved (depth_m_max).\nSCREENING grain (~11 km) for offshore siting and cable-route context —\nNOT navigation-grade. Extends the 59-site BathymetryProfile to any\nocean coordinate.","operationId":"viewport_bathymetry_v2_spatial_bathymetry_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"max_depth_m","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Only cells with mean depth <= this (shallow screening)","title":"Max Depth M"},"description":"Only cells with mean depth <= this (shallow screening)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":15000,"default":8000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"lat":{"type":"number"},"lng":{"type":"number"},"depth_m_mean":{"type":"number"},"depth_m_max":{"type":"number"},"source":{"type":"string"},"evidence_class":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/us-hazard-counties":{"get":{"tags":["Spatial"],"summary":"Viewport Us Hazard Counties","description":"FEMA National Risk Index, county grain (US Public Domain, cleared):\ncomposite risk score/rating, expected annual loss ($), social\nvulnerability, community resilience, and 18 per-peril risk scores\n(wildfire, inland/coastal flood, hurricane, earthquake, drought,\ntornado ...). One feature per county carrying ALL metrics — the\nclient picks which to paint (same contract as /country-surface).\nThis is the reference US insurers and lenders themselves use —\ncounty-grain screening, not parcel-grain underwriting.","operationId":"viewport_us_hazard_counties_v2_spatial_us_hazard_counties_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.02,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":3300,"default":3300,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"fips":{"type":"string"},"state":{"type":"string"},"county":{"type":"string"},"population":{"type":"integer"},"risk_score":{"type":"number"},"risk_rating":{"type":"string"},"eal_total_usd":{"type":"number"},"sovi_score":{"type":"number"},"resl_score":{"type":"number"},"wfir_risk":{"type":"number"},"ifld_risk":{"type":"number"},"cfld_risk":{"type":"number"},"hrcn_risk":{"nullable":true},"erqk_risk":{"type":"number"},"drgt_risk":{"type":"number"},"trnd_risk":{"type":"number"},"hwav_risk":{"nullable":true},"wntw_risk":{"type":"number"},"lnds_risk":{"type":"number"},"source":{"type":"string"},"evidence_class":{"type":"string"},"grain":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"array","items":{}}}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/grid-headroom":{"get":{"tags":["Spatial"],"summary":"Viewport Grid Headroom","description":"PUBLISHED network hosting capacity — the operator's OWN headroom\nfigures, served source_reported and never recomputed. Currently held:\nNorthern Powergrid (GB, 670 primaries/supply points — generation and\ndemand headroom MW, firm capacity, constraint RAG verbatim, GSP\nlinkage). Other GB DNOs and EU operators join as portal access lands\n(most gate behind free registration; access status is documented in\nthe ingest header, gpkg_238). A site's absence means its operator\ndoes not publish it — absence over fabrication. This is the declared\nupgrade to the /coverage caveat 'grid topology is NOT rated-capacity\nor headroom': where the operator publishes headroom, Kortex now\ncarries it with per-row provenance.","operationId":"viewport_grid_headroom_v2_spatial_grid_headroom_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"operator","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by network operator","title":"Operator"},"description":"Filter by network operator"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"default":3000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/us-wind-turbines":{"get":{"tags":["Spatial"],"summary":"Viewport Us Wind Turbines","description":"Every US wind turbine (USWTDB — USGS/LBNL quarterly census, US\nPublic Domain, cleared). Per-turbine capacity, hub height, rotor,\nproject grouping, EIA plant id. This is the COMPLETE registry (75,727\nunits, ~158 GW) — the graph's own wind fleet is OSM-derived and far\nthinner in the US (disclosed on /coverage); the canonical merge is a\nseparate dedup-reviewed wave. Ordered capacity-first so a cap hit\ndrops the smallest units.","operationId":"viewport_us_wind_turbines_v2_spatial_us_wind_turbines_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"min_kw","in":"query","required":false,"schema":{"type":"number","description":"Minimum turbine capacity kW","default":0,"title":"Min Kw"},"description":"Minimum turbine capacity kW"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/us-solar-farms":{"get":{"tags":["Spatial"],"summary":"Viewport Us Solar Farms","description":"US utility-scale solar facilities (USPVDB — USGS/LBNL, US Public\nDomain, cleared): footprint-verified centroids with AC/DC capacity,\naxis type, battery co-location, agrivoltaic status, EIA plant id.\n6,611 facilities, ~132 GW-ac.","operationId":"viewport_us_solar_farms_v2_spatial_us_solar_farms_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":8000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/country-surface":{"get":{"tags":["Spatial"],"summary":"Viewport Country Surface","description":"Country choropleth surface: one feature per country (geoBoundaries\nADM0, CC BY 4.0) carrying every CLEARED country-grain indicator as a\ncolumn — HDI (UNDP), V-Dem democracy, regime instability (ERT), UNGA\nalignment, economic complexity (Atlas), IMF growth, infrastructure gap,\nEmber decarbonisation (latest year), World Bank PPI failure rate, and\nthe Kortex investment-environment composite (modelled, cleared inputs).\nUnder-review indicators (jurisdiction/counterparty risk, Hofstede,\nSIPRI, passport index) are NOT here — they live on the keyed\n/v2/indicators surface. Grain is COUNTRY — deliberately a separate\nsurface from the market-zone voronoi (grain honesty). A country absent\nfrom an indicator carries null, never an interpolation.","operationId":"viewport_country_surface_v2_spatial_country_surface_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.05,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":250,"default":250,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"iso3":{"type":"string"},"hdi_value":{"type":"number"},"democracy_avg":{"type":"number"},"instability_score":{"type":"number"},"avg_dist_usa":{"type":"number"},"eci_value":{"type":"number"},"gdp_growth_pct":{"type":"number"},"infrastructure_gap_index":{"type":"number"},"clean_share_pct":{"type":"number"},"co2_intensity":{"type":"number"},"ppi_failure_rate_pct":{"nullable":true},"investability_score_v2":{"type":"number"},"grain":{"type":"string"},"evidence_class":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"array","items":{}}}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/pipeline-features":{"get":{"tags":["Spatial"],"summary":"Viewport Pipeline Features","description":"Pipeline facilities — compressor/pumping/valve stations and other\npoint features along the pipeline network (OpenInfraMap/OSM, ODbL,\ncleared). ids match graph :PipelineFeature nodes; pairs with the\n/pipelines linework.","operationId":"viewport_pipeline_features_v2_spatial_pipeline_features_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"default":8000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"lifecycle_status":{"type":"string"},"source":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"evidence_class":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/deployment-sites":{"get":{"tags":["Spatial"],"summary":"Viewport Deployment Sites","description":"Offshore deployment-candidate sites (Kortex internal research, 59\nsites) — RESEARCH-GRADE MODELLING, evidence class modelled: tiered\ncandidates with depth, seismic PGA, cable distance and thermal context\nfrom the attached graph profiles (BathymetryProfile, CycloneExposure,\nSeismicHazard, OceanThermal, IceMassZone). KEYED ACCESS ONLY — not\nbecause of third-party rights but because research-preview modelling\ndoes not belong on anonymous surfaces. ids match graph :DeploymentSite\nnodes; traverse for the full profile set.","operationId":"viewport_deployment_sites_v2_spatial_deployment_sites_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/eez":{"get":{"tags":["Spatial"],"summary":"Viewport Eez","description":"Maritime boundary lines — EEZ limits, treaty and median lines\n(Flanders Marine Institute / Marine Regions, CC BY 4.0, cleared;\nattribution carried). territory/sovereign on both sides where the\nsource defines them; boundary lines are as published, not a statement\non disputes.","operationId":"viewport_eez_v2_spatial_eez_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.01,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2500,"default":1500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"line_type":{"type":"string"},"territory1":{"type":"string"},"sovereign1":{"type":"string"},"territory2":{"nullable":true},"sovereign2":{"nullable":true},"length_km":{"type":"number"},"source":{"type":"string"},"evidence_class":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"integer"}}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/fires":{"get":{"tags":["Spatial"],"summary":"Viewport Fires","description":"Active fire / thermal-anomaly detections (NASA FIRMS VIIRS+MODIS,\nUS Public Domain, cleared) — refreshed 6-hourly by the kortex-firms\ntimer. Each row is a satellite detection, not a confirmed fire;\nconfidence is the provider's own score. Ordered by fire radiative power\nso a cap hit drops the faintest detections first.","operationId":"viewport_fires_v2_spatial_fires_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","maximum":168,"description":"Lookback window in hours","default":48,"title":"Hours"},"description":"Lookback window in hours"},{"name":"min_frp","in":"query","required":false,"schema":{"type":"number","description":"Minimum fire radiative power (MW)","default":0,"title":"Min Frp"},"description":"Minimum fire radiative power (MW)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":15000,"default":8000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"frp":{"type":"number"},"confidence":{"type":"string"},"satellite":{"type":"string"},"instrument":{"type":"string"},"daynight":{"type":"string"},"source":{"type":"string"},"evidence_class":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/ntl-change":{"get":{"tags":["Spatial"],"summary":"Viewport Ntl Change","description":"Night-time-lights change events (VIIRS Black Marble monthly composite,\nUS Public Domain, cleared): 0.05-degree cells whose radiance moved\nsignificantly vs their own history (sigma is the z-score we computed —\nevidence class transformed). nearest_infra/nearest_dist_km tie each event\nto the closest known asset. Serves the latest available month, stated on\nevery row — check it: the composite lags reality by weeks to months.","operationId":"viewport_ntl_change_v2_spatial_ntl_change_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"direction","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"brightening | dimming (omit for both)","title":"Direction"},"description":"brightening | dimming (omit for both)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":6000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"month":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"radiance_prev":{"type":"number"},"radiance_curr":{"type":"number"},"delta_pct":{"type":"number"},"sigma":{"type":"number"},"direction":{"type":"string"},"nearest_infra":{"nullable":true},"nearest_dist_km":{"nullable":true},"source":{"type":"string"},"evidence_class":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/no2":{"get":{"tags":["Spatial"],"summary":"Viewport No2","description":"Tropospheric NO2 column density (Sentinel-5P TROPOMI, Copernicus open\nlicence, cleared — attribution carried). Rows are our aggregates of ESA\nL2 pixels (qa_mean/pixel_count disclose the aggregation — evidence class\ntransformed). Window is anchored to the newest observation in the store,\nnot to now(), so a paused feed serves its true vintage rather than\nsilently going empty.","operationId":"viewport_no2_v2_spatial_no2_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"description":"Lookback window in days from the latest observation","default":30,"title":"Days"},"description":"Lookback window in days from the latest observation"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":6000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/water-storage":{"get":{"tags":["Spatial"],"summary":"Viewport Water Storage","description":"Terrestrial water-storage anomaly (NASA GRACE/GRACE-FO mascon\nliquid-water-equivalent thickness, US Public Domain, cleared). Latest\navailable solution month, stated on every row (GRACE lags ~2 months).\nNegative = less stored water than the long-term baseline — drought and\ngroundwater-depletion signal at basin scale, NOT a local measurement:\nnative resolution is ~300 km.","operationId":"viewport_water_storage_v2_spatial_water_storage_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":15000,"default":8000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"time":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"lwe_thickness_cm":{"type":"number"},"uncertainty_cm":{"type":"number"},"source":{"type":"string"},"evidence_class":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/cable-landings":{"get":{"tags":["Spatial"],"summary":"Viewport Cable Landings","description":"Submarine cable landing stations: OSM (40, ODbL, cleared) UNION\nTeleGeography (1,917, UNDER RIGHTS REVIEW — historic CC BY-NC-SA).\nKEYED ACCESS ONLY because TG rows are present (anonymous requests 401,\nAIS pattern); licence + commercial_status ride on every row so\ncommercial_safe consumers can filter to the OSM subset. The TG rows are\nNEVER unioned into cleared/anonymous surfaces.","operationId":"viewport_cable_landings_v2_spatial_cable_landings_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2500,"default":2500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"operator_note":{"nullable":true},"licence":{"type":"string"},"commercial_status":{"type":"string"},"evidence_class":{"type":"string"},"source":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/reactors":{"get":{"tags":["Spatial"],"summary":"Viewport Reactors","description":"Every commercial power reactor (IAEA PRIS, 721 units) — UNDER RIGHTS\nREVIEW (IAEA Nucleus terms permit commercial use with acknowledgment;\ndatabase-specific confirmation pending, see sources register `iaea_pris`).\nKEYED ACCESS ONLY: nginx passes the caller's own key and injects no demo\nkey, so anonymous requests receive 401 (the AIS/TeleGeography pattern).\nNEVER unioned into cleared layers. ids (\"PRIS-<n>\") match graph :Reactor\nnodes; the wider fuel chain (872 NFCIS facilities, 6,175 UDEPO deposits)\nis country-grain in its sources — no coordinates exist, so it is served\nthrough the graph, not fabricated onto a map.","operationId":"viewport_reactors_v2_spatial_reactors_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by PRIS status (Operational | Under Construction | Permanent Shutdown | Suspended Operation …). Omit for all.","title":"Status"},"description":"Filter by PRIS status (Operational | Under Construction | Permanent Shutdown | Suspended Operation …). Omit for all."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"default":2000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"country_iso3":{"type":"string"},"status":{"type":"string"},"reactor_type":{"type":"string"},"model":{"type":"string"},"net_mwe":{"type":"number"},"operator":{"type":"string"},"owner":{"type":"string"},"grid_connection":{"type":"string"},"shutdown_date":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"evidence_class":{"type":"string"},"source":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/capture-decline":{"get":{"tags":["Spatial"],"summary":"Capture Decline","description":"Longitudinal capture-rate decline (gpkg_227). Per grid x VRE fuel\n(solar/wind_onshore/wind_offshore) x calendar year: capture_price\n(generation-weighted day-ahead price — what the market PAID that output,\nnever its cost), base_price (time-weighted year average), and\ncapture_rate_pct — a unit-free ratio, so EUR/GBP/RON grids compare\nhonestly. penetration_pct = the fuel's share of total generation energy.\nHourly join of entsoe_generation x entsoe_price; negative prices kept.\nCoverage fails closed: rows with <85% of the year's hours joined, <10 GWh\ngeneration, or a non-positive base price carry insufficient_coverage=true\nand must never be ranked.","operationId":"capture_decline_v2_spatial_capture_decline_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CaptureDeclineItem"},"type":"array","title":"Response 200 Capture Decline V2 Spatial Capture Decline Get"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/spatial/grid-day":{"get":{"tags":["Spatial"],"summary":"Grid Day","description":"The grid's day — generation shape, price shape, and captured price.","operationId":"grid_day_v2_spatial_grid_day_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"grid","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Grid code (e.g. DE, FR, SE-SE3). Omit for the list of available grids (with years[] per grid). Payload: per season (summer JJA / winter DJF, one calendar year) — 24h generation composition by fuel (MW), wholesale price profile (EUR/MWh), and per-fuel CAPTURED price (each source's output priced at the hours it ran — what the market PAYS it, never its cost) with supply share. entsoe_generation × entsoe_price, hourly-joined; witnessed against the validated prototype.","title":"Grid"},"description":"Grid code (e.g. DE, FR, SE-SE3). Omit for the list of available grids (with years[] per grid). Payload: per season (summer JJA / winter DJF, one calendar year) — 24h generation composition by fuel (MW), wholesale price profile (EUR/MWh), and per-fuel CAPTURED price (each source's output priced at the hours it ran — what the market PAYS it, never its cost) with supply share. entsoe_generation × entsoe_price, hourly-joined; witnessed against the validated prototype."},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Calendar year. Omit for the grid's latest built year. Grids appear only in years they have data for (e.g. DE from 2024).","title":"Year"},"description":"Calendar year. Omit for the grid's latest built year. Grids appear only in years they have data for (e.g. DE from 2024)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GridDayResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/corridor-money":{"get":{"tags":["Spatial"],"summary":"Viewport Corridor Money","description":"Measured money on wires: hour-matched congestion rent per EU border\ncorridor (entsoe_flow x entsoe_da_prices, gpkg_215). Arc runs from the\ncheap zone toward the expensive one — the direction money is earned.","operationId":"viewport_corridor_money_v2_spatial_corridor_money_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":300,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"from_zone":{"type":"string"},"to_zone":{"type":"string"},"name":{"type":"string"},"rent_musd_12mo":{"type":"number"},"uneconomic_musd_12mo":{"type":"number"},"flow_twh_12mo":{"type":"number"},"avg_spread_usd_mwh":{"type":"number"},"hours":{"type":"integer"},"window":{"type":"string"},"basis":{"type":"string"},"source":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"number"}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/water-stress":{"get":{"tags":["Spatial"],"summary":"Viewport Water Stress","description":"Aqueduct water stress basins within a viewport.","operationId":"viewport_water_stress_v2_spatial_water_stress_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.01,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":32000,"default":3000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"region":{"type":"string"},"country":{"type":"string"},"bws_score":{"type":"number"},"bws_cat":{"type":"number"},"drought_score":{"type":"number"},"drought_cat":{"type":"number"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"array","items":{}}}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/vessels":{"get":{"tags":["Spatial"],"summary":"Viewport Vessels","description":"Live vessel positions (AIS) — latest fix per MMSI within the window.\n\nStatic AIS attributes (name, category, destination, draught) ride separate,\nless frequent messages than position reports, so each is taken from the\nnewest row IN THE WINDOW that carries it, not from the latest fix only\n(latest-row-only drops category coverage from ~25% to ~11% of vessels).\n102.3 kts speed and 360° course are AIS \"not available\" sentinels.","operationId":"viewport_vessels_v2_spatial_vessels_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":false,"schema":{"type":"string","description":"Bounding box (optional): lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box (optional): lng1,lat1,lng2,lat2"},{"name":"minutes","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"description":"Freshness window in minutes","default":10,"title":"Minutes"},"description":"Freshness window in minutes"},{"name":"category","in":"query","required":false,"schema":{"type":"string","description":"Filter by ship_type_category","title":"Category"},"description":"Filter by ship_type_category"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"nullable":true},"category":{"nullable":true},"nav_status":{"type":"string"},"destination":{"nullable":true},"speed_kts":{"type":"number"},"heading":{"nullable":true},"course":{"type":"number"},"draught":{"nullable":true},"lat":{"type":"number"},"lng":{"type":"number"},"ts":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/aircraft":{"get":{"tags":["Spatial"],"summary":"Viewport Aircraft","description":"Live aircraft positions (ADS-B) — latest fix per ICAO24 within the window.","operationId":"viewport_aircraft_v2_spatial_aircraft_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":false,"schema":{"type":"string","description":"Bounding box (optional): lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box (optional): lng1,lat1,lng2,lat2"},{"name":"minutes","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"description":"Freshness window in minutes","default":10,"title":"Minutes"},"description":"Freshness window in minutes"},{"name":"airborne_only","in":"query","required":false,"schema":{"type":"boolean","description":"Exclude aircraft on the ground","default":true,"title":"Airborne Only"},"description":"Exclude aircraft on the ground"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"callsign":{"type":"string"},"origin_country":{"type":"string"},"alt_baro_m":{"type":"number"},"speed_ms":{"type":"number"},"heading":{"type":"number"},"vertical_rate":{"type":"number"},"on_ground":{"type":"boolean"},"category":{"nullable":true},"lat":{"type":"number"},"lng":{"type":"number"},"ts":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/live-summary":{"get":{"tags":["Spatial"],"summary":"Live Summary","description":"Counts of distinct vessels and aircraft seen in the window — HUD statline.","operationId":"live_summary_v2_spatial_live_summary_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"minutes","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":1,"description":"Freshness window in minutes","default":10,"title":"Minutes"},"description":"Freshness window in minutes"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"vessels":{"type":"integer"},"aircraft":{"type":"integer"},"as_of":{"type":"string"}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/gdp":{"get":{"tags":["Spatial"],"summary":"Viewport Gdp","description":"Kummu GDP subnational regions (ADM1) within a viewport.","operationId":"viewport_gdp_v2_spatial_gdp_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"simplify","in":"query","required":false,"schema":{"type":"number","description":"Simplification tolerance","default":0.01,"title":"Simplify"},"description":"Simplification tolerance"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"iso3":{"type":"string"},"country":{"type":"string"},"region":{"type":"string"},"gdp_2020":{"type":"number"},"geometry":{"type":"object","properties":{"type":{"type":"string"},"coordinates":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"number"}}}}},"additionalProperties":true}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/water":{"get":{"tags":["Spatial"],"summary":"Viewport Water","description":"Water infrastructure: reservoirs (Global Dam Watch CC BY 4.0 + OSM),\nwells, towers, wastewater/treatment plants and pumping stations\n(OpenInfraMap/OSM, ODbL) — ~1.4M graph nodes, all sources cleared.\nServing table water_assets_geo is built from the graph by\ningest/gpkg_208_globe_geo_mirrors.py; ids match graph nodes.\nOrdered plants-first then named rows, so a cap hit drops anonymous\nwells/towers before the story-carrying assets.","operationId":"viewport_water_v2_spatial_water_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"kinds","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated filter: reservoir | well | tower | wastewater | treatment | pumping (empty = all)","default":"","title":"Kinds"},"description":"Comma-separated filter: reservoir | well | tower | wastewater | treatment | pumping (empty = all)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"operator_name":{"type":"string"},"reservoir_type":{"nullable":true},"substance":{"nullable":true},"source":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/grid-detail":{"get":{"tags":["Spatial"],"summary":"Viewport Grid Detail","description":"Engineering-grade grid detail below the transmission backbone:\njunctions, transformers, switches, compensators (~560k graph nodes,\nOpenInfraMap/OSM, ODbL cleared). Key-gated on the globe — this is a\npaid-tier layer (business choice, not a rights hold). Serving table\ngrid_detail_geo from ingest/gpkg_208_globe_geo_mirrors.py; ids match\ngraph nodes. Voltage-DESC ordering drops the least significant first.","operationId":"viewport_grid_detail_v2_spatial_grid_detail_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"kinds","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated filter: junction | transformer | switch | compensator (empty = all)","default":"","title":"Kinds"},"description":"Comma-separated filter: junction | transformer | switch | compensator (empty = all)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"nullable":true},"operator_name":{"type":"string"},"voltage_kv":{"nullable":true},"rating_mva":{"nullable":true},"v_primary_kv":{"type":"number"},"v_secondary_kv":{"nullable":true},"parent_kv":{"type":"number"},"parent_tier":{"type":"string"},"transformer_type":{"nullable":true},"lifecycle_status":{"type":"string"},"source":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/telecom-sites":{"get":{"tags":["Spatial"],"summary":"Viewport Telecom Sites","description":"Telecom sites: masts/towers (OpenInfraMap/OSM, ODbL) and carrier/IX\nbuildings (PeeringDB CC BY-SA 4.0) — ~755k graph nodes, sources cleared.\nServing table telecom_sites_geo from ingest/gpkg_208_globe_geo_mirrors.py.\nBuildings order first (26k story-carrying interconnection sites), then\nnamed masts — a cap hit drops anonymous masts.","operationId":"viewport_telecom_sites_v2_spatial_telecom_sites_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"kinds","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated filter: mast | building (empty = all)","default":"","title":"Kinds"},"description":"Comma-separated filter: mast | building (empty = all)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"mast_type":{"nullable":true},"operator_name":{"type":"string"},"lifecycle_status":{"type":"string"},"source":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/queue-projects":{"get":{"tags":["Spatial"],"summary":"Viewport Queue Projects","description":"US interconnection-queue projects (LBNL, CC BY 4.0 cleared) — 36k\ngraph nodes; the 25.9k with a resolvable geocode are served here at\ncounty-centroid precision, disclosed per-row via geo_precision (a queue\nfiling names a county/POI, not a parcel). Serving table\nqueue_projects_geo from ingest/gpkg_208_globe_geo_mirrors.py; ids match\nQueueProject graph nodes (traverse-able). MW-DESC ordering drops the\nsmallest projects first on a cap hit.","operationId":"viewport_queue_projects_v2_spatial_queue_projects_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","description":"Bounding box: lng1,lat1,lng2,lat2","title":"Bbox"},"description":"Bounding box: lng1,lat1,lng2,lat2"},{"name":"status","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated q_status filter: active | operational | withdrawn | suspended (empty = all)","default":"","title":"Status"},"description":"Comma-separated q_status filter: active | operational | withdrawn | suspended (empty = all)"},{"name":"min_mw","in":"query","required":false,"schema":{"type":"number","description":"Minimum total_mw (0 = no floor)","default":0,"title":"Min Mw"},"description":"Minimum total_mw (0 = no floor)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":30000,"default":15000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/spatial/demand-signals":{"get":{"tags":["Spatial"],"summary":"Demand Signals","description":"Where electricity demand is coming from — country-grain demand-signal\njoin (v2): EV adoption (IEA/OWID; latest sales share + 5-year change),\npopulation level and growth (World Bank WDI SP.POP.TOTL, source-reported\ncounts; v1 used GHSL zone-polygon rollups, which clipped coastal\nsettlement — Norway summed 17% low), building stock (Microsoft footprints\ndensity grid), and datacentre facility counts. A `rates_context` block\ncarries the latest US 10Y yield, 2s10s slope and Baa credit spread\n(FRED) — the financing backdrop, global not per-country. Country-grain\nonly; screening context, no forecasts.","operationId":"demand_signals_v2_spatial_demand_signals_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DemandSignalsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/provenance/{name}":{"get":{"tags":["Provenance"],"summary":"Get Provenance","description":"Trace a table or Memgraph label back to its ultimate external source(s).\n\nReturns the full provenance chain: kind (external/derived/scratch/infrastructure/unattributed),\ndirect sources, ultimate external sources with licences, and producer scripts.","operationId":"get_provenance_v2_provenance__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"entity_kind":{"type":"string"},"name":{"type":"string"},"cluster_id":{"type":"string"},"source_id":{"type":"string"},"provenance":{"type":"object","properties":{"kind":{"type":"string"},"direct_sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"homepage":{"type":"string"},"refresh":{"type":"string"}},"additionalProperties":true}},"ultimate_sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"licence":{"type":"string"},"commercial_status":{"type":"string"},"homepage":{"type":"string"},"refresh":{"type":"string"}},"additionalProperties":true}},"producer_scripts":{"type":"array","items":{"type":"string"}},"derivation_depth":{"type":"integer"}},"additionalProperties":true}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/provenance":{"get":{"tags":["Provenance"],"summary":"List Provenance","description":"List provenance for all tables, optionally filtered by kind.","operationId":"list_provenance_v2_provenance_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","description":"Filter by kind: external/derived/infrastructure/scratch/unattributed","title":"Kind"},"description":"Filter by kind: external/derived/infrastructure/scratch/unattributed"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"source_id":{"type":"string"},"kind":{"type":"string"},"ultimate_sources":{"type":"array","items":{}},"producer_scripts":{"type":"array","items":{}}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/provenance/sources/{source_id}":{"get":{"tags":["Provenance"],"summary":"List By Source","description":"List all tables that trace back to a specific external source.","operationId":"list_by_source_v2_provenance_sources__source_id__get","parameters":[{"name":"source_id","in":"path","required":true,"schema":{"type":"string","title":"Source Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"source_id":{"type":"string"},"count":{"type":"integer"},"tables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string"},"source_id":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/schema":{"get":{"tags":["Schema"],"summary":"Schema Overview","description":"Snapshot meta, totals, the three ontology axes with label counts, edge-kind distribution.","operationId":"schema_overview_v2_schema_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"snapshot":{"type":"object","properties":{"at":{"type":"string"},"method":{"type":"string"},"doc_version":{"type":"string"},"introspection_duration_ms":{"type":"integer"},"sources":{"type":"object","properties":{"postgresql":{"type":"object","properties":{"duration_ms":{"type":"integer"}},"additionalProperties":true},"memgraph":{"type":"object","properties":{"duration_ms":{"type":"integer"}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true},"totals":{"type":"object","properties":{"postgresql":{"type":"object","properties":{"table_count":{"type":"integer"},"populated_table_count":{"type":"integer"},"row_count_total":{"type":"integer"},"size_bytes_total":{"type":"integer"},"hypertable_count":{"type":"integer"}},"additionalProperties":true},"memgraph":{"type":"object","properties":{"label_count":{"type":"integer"},"node_count_total":{"type":"integer"},"edge_count_total":{"type":"integer"},"edge_type_count":{"type":"integer"},"index_count":{"type":"integer"}},"additionalProperties":true}},"additionalProperties":true},"label_count":{"type":"integer"},"edge_type_count":{"type":"integer"},"axes":{"type":"object","properties":{"domain":{"type":"object","properties":{"transport":{"type":"integer"},"power":{"type":"integer"},"orkora":{"type":"integer"},"corporate":{"type":"integer"},"water":{"type":"integer"},"uncategorised":{"type":"integer"},"reference":{"type":"integer"},"environment":{"type":"integer"},"minerals":{"type":"integer"},"geo":{"type":"integer"},"telecom":{"type":"integer"},"hydrocarbons":{"type":"integer"}},"additionalProperties":true},"layer":{"type":"object","properties":{"asset":{"type":"integer"},"control":{"type":"integer"},"exposure":{"type":"integer"},"ownership":{"type":"integer"},"network":{"type":"integer"},"uncategorised":{"type":"integer"},"reference":{"type":"integer"},"governance":{"type":"integer"},"resource":{"type":"integer"}},"additionalProperties":true},"tier":{"type":"object","properties":{"spoke":{"type":"integer"},"spine":{"type":"integer"},"reference":{"type":"integer"},"uncategorised":{"type":"integer"}},"additionalProperties":true}},"additionalProperties":true},"edge_kinds":{"type":"object","properties":{"authoritative":{"type":"integer"},"registry":{"type":"integer"},"inferred":{"type":"integer"},"stitched":{"type":"integer"},"derived":{"type":"integer"}},"additionalProperties":true}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}}}}},"/v2/schema/full":{"get":{"tags":["Schema"],"summary":"Schema Full","description":"The complete snapshot (~2MB): clusters, tables, labels, edge_types, sources.","operationId":"schema_full_v2_schema_full_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"$schema":{"type":"string"},"snapshot":{"type":"object","properties":{"at":{"type":"string"},"method":{"type":"string"},"doc_version":{"type":"string"},"introspection_duration_ms":{"type":"integer"},"sources":{"type":"object","properties":{"postgresql":{"type":"object","properties":{"duration_ms":{"type":"integer"}},"additionalProperties":true},"memgraph":{"type":"object","properties":{"duration_ms":{"type":"integer"}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true},"totals":{"type":"object","properties":{"postgresql":{"type":"object","properties":{"table_count":{"type":"integer"},"populated_table_count":{"type":"integer"},"row_count_total":{"type":"integer"},"size_bytes_total":{"type":"integer"},"hypertable_count":{"type":"integer"}},"additionalProperties":true},"memgraph":{"type":"object","properties":{"label_count":{"type":"integer"},"node_count_total":{"type":"integer"},"edge_count_total":{"type":"integer"},"edge_type_count":{"type":"integer"},"index_count":{"type":"integer"}},"additionalProperties":true}},"additionalProperties":true},"clusters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"order":{"type":"integer"},"description":{"type":"string"},"table_prefixes":{"type":"array","items":{"type":"string"}},"label_names":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"tables":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"schema":{"type":"string"},"cluster_id":{"type":"string"},"source_id":{"type":"string"},"kind":{"type":"string"},"is_hypertable":{"type":"boolean"},"is_internal":{"type":"boolean"},"description":{"nullable":true},"row_count_hint":{"type":"integer"},"size_bytes_hint":{"type":"integer"},"total_size_bytes_hint":{"type":"integer"},"last_update":{"type":"string"},"columns":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"ordinal":{"type":"integer"},"type":{"type":"string"},"nullable":{"type":"boolean"},"is_pk":{"type":"boolean"},"is_fk":{"type":"boolean"},"is_indexed":{"type":"boolean"},"is_geometry":{"type":"boolean"}},"additionalProperties":true}},"indexes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"definition":{"type":"string"}},"additionalProperties":true}},"provenance":{"type":"object","properties":{"kind":{"type":"string"},"sources":{"type":"array","items":{}},"ultimate_sources":{"type":"array","items":{}},"producer_scripts":{"type":"array","items":{}},"derivation_depth":{"type":"integer"}},"additionalProperties":true}},"additionalProperties":true}},"foreign_keys":{"type":"array","items":{"type":"object","properties":{"constraint_name":{"type":"string"},"from_table":{"type":"string"},"from_column":{"type":"string"},"to_table":{"type":"string"},"to_column":{"type":"string"},"on_delete":{"type":"string"}},"additionalProperties":true}},"labels":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"domain":{"type":"string"},"layer":{"type":"string"},"tier":{"type":"string"},"cluster_id":{"type":"string"},"source_id":{"type":"string"},"node_count_hint":{"type":"integer"},"orphan_count_hint":{"type":"integer"},"orphan_rate_hint":{"type":"number"},"properties":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"is_indexed":{"type":"boolean"},"fill_rate":{"type":"number"}},"additionalProperties":true}},"facets":{"type":"object","properties":{"identity":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"location":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"core":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"operations":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true}},"edge_types":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"edge_count_hint":{"type":"integer"},"adjacency_patterns":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"count_hint":{"type":"integer"},"cluster_pair":{"type":"string"}},"additionalProperties":true}},"is_cross_cluster":{"type":"boolean"},"kind":{"type":"string"},"fidelity_method":{"type":"string"}},"additionalProperties":true}},"mirrors":{"type":"array","items":{"type":"object","properties":{"table":{"type":"string"},"label":{"type":"string"},"key":{"type":"string"}},"additionalProperties":true}},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"homepage":{"type":"string"},"licence":{"type":"string"},"refresh":{"type":"string"},"description":{"type":"string"},"table_prefixes":{"type":"array","items":{"type":"string"}},"labels":{"type":"array","items":{"type":"string"}},"commercial_status":{"type":"string"},"commercial_note":{"type":"string"},"tables":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"example_queries":{"type":"object","properties":{"Substation":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"complexity":{"type":"string"},"cypher":{"type":"string"}},"additionalProperties":true}},"TransmissionLine":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"complexity":{"type":"string"},"cypher":{"type":"string"}},"additionalProperties":true}},"Generator":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"complexity":{"type":"string"},"cypher":{"type":"string"}},"additionalProperties":true}},"Reactor":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"complexity":{"type":"string"},"cypher":{"type":"string"}},"additionalProperties":true}},"CorporateEntity":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"complexity":{"type":"string"},"cypher":{"type":"string"}},"additionalProperties":true}},"Company":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"complexity":{"type":"string"},"cypher":{"type":"string"}},"additionalProperties":true}},"Grid":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"complexity":{"type":"string"},"cypher":{"type":"string"}},"additionalProperties":true}},"Jurisdiction":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"complexity":{"type":"string"},"cypher":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"popular_paths":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"complexity":{"type":"string"},"cypher":{"type":"string"}},"additionalProperties":true}},"property_facets":{"type":"object","properties":{"asset_risk":{"type":"array","items":{"type":"string"}},"capacity":{"type":"array","items":{"type":"string"}},"climate":{"type":"array","items":{"type":"string"}},"connectivity":{"type":"array","items":{"type":"string"}},"country_risk":{"type":"array","items":{"type":"string"}},"demand":{"type":"array","items":{"type":"string"}},"demographics":{"type":"array","items":{"type":"string"}},"development":{"type":"array","items":{"type":"string"}},"digital":{"type":"array","items":{"type":"string"}},"economy":{"type":"array","items":{"type":"string"}},"emissions":{"type":"array","items":{"type":"string"}},"energy_mix":{"type":"array","items":{"type":"string"}},"environment":{"type":"array","items":{"type":"string"}},"financials":{"type":"array","items":{"type":"string"}},"geopolitics":{"type":"array","items":{"type":"string"}},"governance":{"type":"array","items":{"type":"string"}},"grid_stability":{"type":"array","items":{"type":"string"}},"grid_stress":{"type":"array","items":{"type":"string"}},"hazard":{"type":"array","items":{"type":"string"}},"identity":{"type":"array","items":{"type":"string"}},"location":{"type":"array","items":{"type":"string"}},"market":{"type":"array","items":{"type":"string"}},"nightlights":{"type":"array","items":{"type":"string"}},"operations":{"type":"array","items":{"type":"string"}},"ownership":{"type":"array","items":{"type":"string"}},"resource":{"type":"array","items":{"type":"string"}},"technical":{"type":"array","items":{"type":"string"}},"topology":{"type":"array","items":{"type":"string"}},"water":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"facet_core_keys":{"type":"array","items":{"type":"string"}},"facet_fill_gate":{"type":"number"},"schema_version":{"type":"string"},"snapshot_id":{"type":"string"},"snapshot_generated_at":{"type":"string"}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}}}}},"/v2/schema/domains":{"get":{"tags":["Schema"],"summary":"Schema Axes","description":"Enumerate the three ontology axes and which labels populate each value.","operationId":"schema_axes_v2_schema_domains_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"object","properties":{"corporate":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"environment":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"geo":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"hydrocarbons":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"minerals":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"orkora":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"power":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"reference":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"telecom":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"transport":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"uncategorised":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"water":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"additionalProperties":true},"layer":{"type":"object","properties":{"asset":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"control":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"exposure":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"governance":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"network":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"ownership":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"reference":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"resource":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"uncategorised":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"additionalProperties":true},"tier":{"type":"object","properties":{"reference":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"spine":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"spoke":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"uncategorised":{"type":"object","properties":{"label_count":{"type":"integer"},"labels":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}}}}},"/v2/schema/labels":{"get":{"tags":["Schema"],"summary":"Schema Labels","description":"List labels with ontology facets. Filter by any combination of domain/layer/tier.","operationId":"schema_labels_v2_schema_labels_get","parameters":[{"name":"domain","in":"query","required":false,"schema":{"type":"string","title":"Domain"}},{"name":"layer","in":"query","required":false,"schema":{"type":"string","title":"Layer"}},{"name":"tier","in":"query","required":false,"schema":{"type":"string","title":"Tier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"filters":{"type":"object","properties":{"domain":{"nullable":true},"layer":{"nullable":true},"tier":{"nullable":true}},"additionalProperties":true},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"domain":{"type":"string"},"layer":{"type":"string"},"tier":{"type":"string"},"node_count":{"type":"integer"},"orphan_rate":{"type":"number"},"cluster_id":{"type":"string"},"source_id":{"type":"string"},"property_count":{"type":"integer"},"indexed_property_count":{"type":"integer"}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/schema/labels/{name}":{"get":{"tags":["Schema"],"summary":"Schema Label","description":"Full detail for one label: facets + all properties with fill_rate and index flags.","operationId":"schema_label_v2_schema_labels__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"domain":{"type":"string"},"layer":{"type":"string"},"tier":{"type":"string"},"cluster_id":{"type":"string"},"source_id":{"type":"string"},"node_count_hint":{"type":"integer"},"orphan_count_hint":{"type":"integer"},"orphan_rate_hint":{"type":"number"},"properties":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"is_indexed":{"type":"boolean"},"fill_rate":{"type":"number"}},"additionalProperties":true}},"facets":{"type":"object","properties":{"core":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"location":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"energy_mix":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"provenance":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"capacity":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"grid_stress":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"grid_stability":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"nightlights":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"market":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"financials":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"operations":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"demand":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"other":{"type":"object","properties":{"property_count":{"type":"integer"},"populated_count":{"type":"integer"},"max_fill":{"type":"number"},"is_sparse":{"type":"boolean"},"properties":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/schema/edges":{"get":{"tags":["Schema"],"summary":"Schema Edges","description":"List edge types with provenance kind + fidelity_method. Filter by kind or cross-domain.","operationId":"schema_edges_v2_schema_edges_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","title":"Kind"}},{"name":"cross_cluster","in":"query","required":false,"schema":{"type":"boolean","title":"Cross Cluster"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"filters":{"type":"object","properties":{"kind":{"nullable":true},"cross_cluster":{"nullable":true}},"additionalProperties":true},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string"},"fidelity_method":{"type":"string"},"edge_count":{"type":"integer"},"is_cross_cluster":{"type":"boolean"},"adjacency_count":{"type":"integer"}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/schema/edges/{name}":{"get":{"tags":["Schema"],"summary":"Schema Edge","description":"Full detail for one edge type: kind, fidelity_method, all adjacency patterns (domain pairs).","operationId":"schema_edge_v2_schema_edges__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"edge_count_hint":{"type":"integer"},"adjacency_patterns":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"count_hint":{"type":"integer"},"cluster_pair":{"type":"string"}},"additionalProperties":true}},"is_cross_cluster":{"type":"boolean"},"kind":{"type":"string"},"fidelity_method":{"type":"string"}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/network-cost":{"get":{"tags":["Network Cost"],"summary":"Network Cost Snapshot","description":"Current-year US network cost by balancing authority.\n\nRevenue requirement = O&M (incl. acct 565 wheeling) + depreciation\n+ 7.5pct return on net plant, over wires (bundled + delivery) MWh.\ncost_scope and provenance fields passed through from the build.","operationId":"network_cost_snapshot_v2_network_cost_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"zone","in":"query","required":false,"schema":{"type":"string","description":"Filter by BA code or grid_id (e.g. CISO, MISO)","title":"Zone"},"description":"Filter by BA code or grid_id (e.g. CISO, MISO)"},{"name":"min_sales_twh","in":"query","required":false,"schema":{"type":"number","description":"Minimum wires sales in TWh","default":0,"title":"Min Sales Twh"},"description":"Minimum wires sales in TWh"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"ba_code":{"type":"string"},"grid_id":{"type":"string"},"report_year":{"type":"integer"},"n_utilities":{"type":"integer"},"rr_usd_per_mwh":{"type":"number"},"om_usd_per_mwh":{"type":"number"},"rr_bn_usd":{"type":"number"},"wires_sales_twh":{"type":"number"},"return_rate":{"type":"number"},"tx_om_bn":{"type":"number"},"dist_om_bn":{"type":"number"},"dep_bn":{"type":"number"},"return_bn":{"type":"number"},"source":{"type":"string"},"method":{"type":"string"},"updated_at":{"type":"string"},"kind":{"type":"string"},"cost_scope":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/network-cost/history":{"get":{"tags":["Network Cost"],"summary":"Network Cost History","description":"30-year network cost panel (1994-2024) by balancing authority.\n\nallocation_vintage=2024 throughout (current BA membership projected\nback). n_sales_corrected flags the 2005-08 kWh-unit surgical fix.","operationId":"network_cost_history_v2_network_cost_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"zone","in":"query","required":false,"schema":{"type":"string","description":"Filter by BA code or grid_id","title":"Zone"},"description":"Filter by BA code or grid_id"},{"name":"since_year","in":"query","required":false,"schema":{"type":"integer","maximum":2024,"minimum":1994,"default":1994,"title":"Since Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"default":1200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"ba_code":{"type":"string"},"grid_id":{"type":"string"},"report_year":{"type":"integer"},"n_utilities":{"type":"integer"},"rr_usd_per_mwh":{"type":"number"},"rr_bn_usd":{"type":"number"},"sales_twh":{"type":"number"},"n_sales_corrected":{"type":"integer"},"allocation_vintage":{"type":"integer"},"source":{"type":"string"},"method":{"type":"string"},"updated_at":{"type":"string"},"kind":{"type":"string"},"cost_scope":{"type":"string"}},"additionalProperties":true},"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/nodes/{label}/{node_id}":{"get":{"tags":["Nodes"],"summary":"Get Node","description":"Fetch any node by label + id. Faceted by default; ?shape=raw for the flat node.","operationId":"get_node_v2_nodes__label___node_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"label","in":"path","required":true,"schema":{"type":"string","title":"Label"}},{"name":"node_id","in":"path","required":true,"schema":{"type":"string","title":"Node Id"}},{"name":"shape","in":"query","required":false,"schema":{"type":"string","description":"faceted | raw","default":"faceted","title":"Shape"},"description":"faceted | raw"},{"name":"include_sparse","in":"query","required":false,"schema":{"type":"boolean","description":"include population-sparse facets","default":false,"title":"Include Sparse"},"description":"include population-sparse facets"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"core":{"type":"object","properties":{"id":{"type":"string"},"lat":{"type":"number"},"lng":{"type":"number"},"name":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true},"facets":{"type":"object","properties":{"market":{"type":"object","properties":{"avg_price":{"type":"number"},"avg_price_usd":{"type":"number"},"local_currency":{"type":"string"},"median_price":{"type":"integer"},"median_price_usd":{"type":"integer"},"price_basis":{"type":"string"},"price_currency":{"type":"string"},"price_emission_quadrant":{"type":"string"},"price_fidelity":{"type":"string"},"price_layer":{"type":"string"},"price_volatility":{"type":"integer"},"price_volatility_usd":{"type":"integer"}},"additionalProperties":true},"capacity":{"type":"object","properties":{"capacity_inventory_status":{"type":"string"},"capacity_mechanism":{"type":"string"},"net_revenue_bn":{"type":"number"},"stress_total_capacity_mw":{"type":"integer"}},"additionalProperties":true},"core":{"type":"object","properties":{"country_code":{"type":"string"},"dominant_fuel":{"type":"string"},"sync_area_id":{"type":"string"},"zone_key":{"type":"string"}},"additionalProperties":true},"location":{"type":"object","properties":{"country_name":{"type":"string"}},"additionalProperties":true},"demand":{"type":"object","properties":{"demand_avg_mw":{"type":"integer"},"demand_peak_mw":{"type":"integer"},"demand_trajectory":{"type":"string"},"demand_yoy_growth_pct":{"type":"number"}},"additionalProperties":true},"provenance":{"type":"object","properties":{"_provenance":{"type":"object","properties":{"demand":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"diversity":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"fuel_mix":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"generation":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"genmix":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"inertia":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"money":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"money_wedge":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"ntl":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"price":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"seasonal":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true},"stress":{"type":"object","properties":{"kind":{"type":"string"},"method":{"type":"string"},"source":{"type":"string"},"updated_at":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true}},"additionalProperties":true},"energy_mix":{"type":"object","properties":{"dirty_share_pct":{"type":"number"},"diversity_class":{"type":"string"},"diversity_dominant_fuel":{"type":"string"},"diversity_dominant_pct":{"type":"number"},"diversity_entropy":{"type":"number"},"diversity_n_fuels":{"type":"integer"},"dominant_fuel_generation":{"type":"string"},"dominant_fuel_pct":{"type":"number"},"fossil_growth_3yr_pct":{"type":"number"},"fuel_diversity_class":{"type":"string"},"fuel_entropy":{"type":"number"},"fuel_mix_intensity_json":{"type":"string"},"fuel_mix_json":{"type":"string"},"genmix_fastest_declining_fuel":{"type":"string"},"genmix_fastest_declining_pp_yr":{"type":"number"},"genmix_fastest_growing_fuel":{"type":"string"},"genmix_fastest_growing_pp_yr":{"type":"number"},"re_growth_3yr_pct":{"type":"number"},"seasonal_peak_re_pct":{"type":"number"},"seasonal_trough_re_pct":{"type":"number"}},"additionalProperties":true},"grid_stress":{"type":"object","properties":{"dominant_fuel_generation_pct":{"type":"number"},"seasonal_mismatch_class":{"type":"string"},"seasonal_months_covered":{"type":"integer"},"seasonal_peak_month":{"type":"integer"},"seasonal_swing":{"type":"number"},"seasonal_trough_month":{"type":"integer"},"stress_avg_carbon_cost":{"type":"integer"},"stress_avg_water_stress":{"type":"number"},"stress_carbon_exposed_generators":{"type":"integer"},"stress_carbon_exposed_gw":{"type":"number"},"stress_carbon_intensity":{"type":"number"},"stress_class":{"type":"string"},"stress_critical_cooling_plants":{"type":"integer"},"stress_demand_growth_pct":{"type":"number"},"stress_demand_trajectory":{"type":"string"},"stress_index":{"type":"number"},"stress_price_direction":{"type":"string"},"stress_total_co2_tonnes":{"type":"integer"}},"additionalProperties":true},"financials":{"type":"object","properties":{"gen_revenue_bn":{"type":"number"},"money_conservation_ratio":{"type":"number"},"money_consumer_spend_m":{"type":"number"},"money_contributing_tiers":{"type":"array","items":{"type":"string"}},"money_fidelity_score":{"type":"number"},"money_gen_coverage":{"type":"number"},"money_gen_revenue_m":{"type":"integer"},"money_network_m":{"type":"number"},"money_retail_quality_flag":{"type":"boolean"},"money_retail_usd_mwh":{"type":"integer"},"money_retail_witness_ratio":{"type":"number"},"money_supply_margin_m":{"type":"number"},"money_taxes_levies_m":{"type":"number"},"money_wedge_audit_status":{"type":"string"},"money_wedge_contributing_tiers":{"type":"array","items":{"type":"string"}},"money_wedge_m":{"type":"number"},"money_wholesale_usd_mwh":{"type":"integer"},"revenue_model":{"type":"string"},"total_revenue_bn":{"type":"number"}},"additionalProperties":true},"operations":{"type":"object","properties":{"generation_period":{"type":"string"},"generation_trend":{"type":"string"}},"additionalProperties":true},"grid_stability":{"type":"object","properties":{"inertia_est_rocof_hz_s":{"type":"number"},"inertia_inverter_mw":{"type":"integer"},"inertia_inverter_pct":{"type":"number"},"inertia_largest_unit_mw":{"type":"integer"},"inertia_sync_mw":{"type":"integer"},"inertia_total_mws":{"type":"number"},"stress_inverter_pct":{"type":"number"}},"additionalProperties":true},"nightlights":{"type":"object","properties":{"ntl_activity_index":{"type":"number"},"ntl_electrification_rate":{"type":"number"},"ntl_grid_reliability":{"type":"number"},"ntl_latest_lit_fraction":{"type":"number"},"ntl_latest_radiance":{"type":"number"},"ntl_mean_lit_fraction":{"type":"number"},"ntl_mean_radiance":{"type":"number"},"ntl_months_observed":{"type":"integer"},"ntl_volatility":{"type":"number"},"ntl_window":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"meta":{"type":"object","properties":{"label":{"type":"string"},"as_of":{"type":"string"},"present_facets":{"type":"array","items":{"type":"string"}},"suppressed_sparse":{"type":"array","items":{"type":"string"}},"gate":{"type":"number"}},"additionalProperties":true}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/nodes/{label}/{node_id}/relationships":{"get":{"tags":["Nodes"],"summary":"List Relationships","description":"Declare which relationships are traversable from this node (schema-driven).","operationId":"list_relationships_v2_nodes__label___node_id__relationships_get","parameters":[{"name":"label","in":"path","required":true,"schema":{"type":"string","title":"Label"}},{"name":"node_id","in":"path","required":true,"schema":{"type":"string","title":"Node Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"id":{"type":"string"},"count":{"type":"integer"},"relationships":{"type":"array","items":{"type":"object","properties":{"relationship":{"type":"string"},"direction":{"type":"string"},"neighbour_label":{"type":"string"},"count_hint":{"type":"integer"},"path":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/nodes/{label}/{node_id}/{relationship}":{"get":{"tags":["Nodes"],"summary":"Traverse Relationship","description":"Traverse one relationship from a node. Schema-validated, fidelity-rendered, filterable.","operationId":"traverse_relationship_v2_nodes__label___node_id___relationship__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"label","in":"path","required":true,"schema":{"type":"string","title":"Label"}},{"name":"node_id","in":"path","required":true,"schema":{"type":"string","title":"Node Id"}},{"name":"relationship","in":"path","required":true,"schema":{"type":"string","title":"Relationship"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","description":"auto | out | in | both","default":"auto","title":"Direction"},"description":"auto | out | in | both"},{"name":"kind","in":"query","required":false,"schema":{"type":"string","description":"filter by fidelity kind, e.g. authoritative","title":"Kind"},"description":"filter by fidelity kind, e.g. authoritative"},{"name":"min_confidence","in":"query","required":false,"schema":{"type":"number","description":"minimum edge confidence","title":"Min Confidence"},"description":"minimum edge confidence"},{"name":"max_distance_km","in":"query","required":false,"schema":{"type":"number","description":"maximum edge distance_km","title":"Max Distance Km"},"description":"maximum edge distance_km"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"none | confidence | distance (ranks results; heavier on very high-degree nodes)","default":"none","title":"Sort"},"description":"none | confidence | distance (ranks results; heavier on very high-degree nodes)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string"},"id":{"type":"string"},"relationship":{"type":"string"},"direction":{"type":"array","items":{"type":"string"}},"sort":{"type":"string"},"filters":{"type":"object","properties":{"kind":{"nullable":true},"min_confidence":{"nullable":true},"max_distance_km":{"nullable":true}},"additionalProperties":true},"count":{"type":"integer"},"has_more":{"type":"boolean"},"results":{"type":"array","items":{"type":"object","properties":{"neighbour":{"type":"object","properties":{"label":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"}},"additionalProperties":true},"direction":{"type":"string"},"fidelity":{"type":"object","properties":{"kind":{"type":"string"},"fidelity_method":{"type":"string"}},"additionalProperties":true},"edge":{"type":"object","properties":{"fidelity_method":{"type":"string"},"kind":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/errors":{"get":{"tags":["Agent"],"summary":"Error Catalogue","description":"The developed error contract: every stable code with its HTTP status,\nmeaning and the action that resolves it. Machine-readable twin of the\nerror envelope; codes never rename once published.","operationId":"error_catalogue_v2_errors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"envelope":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"status":{"type":"string"},"request_id":{"type":"string"},"details":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"codes":{"type":"object","properties":{"bad_request":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"insufficient_credits":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"internal_error":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"invalid_api_key":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"invalid_parameter":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"missing_api_key":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"rate_limited":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"resource_not_found":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"rights_mode_blocked":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"scope_denied":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"service_unavailable":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true},"write_not_allowed":{"type":"object","properties":{"status":{"type":"integer"},"meaning":{"type":"string"},"action":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"notes":{"type":"array","items":{"type":"string"}}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}}}}},"/v2/mcp":{"post":{"tags":["Agent"],"summary":"Mcp Endpoint","description":"MCP streamable-HTTP endpoint. One JSON-RPC message per POST.","operationId":"mcp_endpoint_v2_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","description":"JSON-RPC 2.0 envelope (MCP streamable HTTP). tools/call results carry {data, cost{billed_credits, floor_credits, delivered_value_credits, basis}, receipt_id} JSON in content[0].text.","properties":{"jsonrpc":{"type":"string"},"id":{"anyOf":[{"type":"integer"},{"type":"string"}],"nullable":true},"result":{"type":"object","additionalProperties":true},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true,"x-kortex-schema-basis":"hand-written protocol envelope"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v2/corrections":{"get":{"tags":["Evidence"],"summary":"Corrections","description":"The corrections register: every governance-driven change to served\nnumbers, with before/after and the reason. Public by design — a data\nplatform's corrections are part of its evidence, not a liability to\nhide. Poll ?since= for deltas or subscribe to /v2/corrections.rss.","operationId":"corrections_v2_corrections_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO date; entries on/after","title":"Since"},"description":"ISO date; entries on/after"},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"correction|quarantine|basis_change|flagging|retraction","title":"Kind"},"description":"correction|quarantine|basis_change|flagging|retraction"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"occurred_at":{"type":"string"},"kind":{"type":"string"},"subject":{"type":"string"},"scope":{"type":"string"},"summary":{"type":"string"},"before_value":{"type":"string"},"after_value":{"type":"string"},"reason":{"type":"string"},"method_link":{"type":"string"}},"additionalProperties":true}},"kinds":{"type":"array","items":{"type":"string"}},"feed":{"type":"string"},"policy":{"type":"string"}},"additionalProperties":true,"x-kortex-schema-basis":"sampled from a live response; fields optional"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/leads":{"post":{"tags":["Contact"],"summary":"Submit Lead","description":"Record an enquiry. Founder-reviewed; expect a personal reply, not automation.","operationId":"submit_lead_v2_leads_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadSubmission"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadAccepted"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/receipts/{receipt_id}":{"get":{"tags":["receipts"],"summary":"Get Receipt","description":"Retrieve a frozen, previously computed answer by its receipt id.\n\nReturns the receipt exactly as archived: request_parameters, the canonical\nresponse items whose SHA-256 is response_sha256, the graph/schema snapshot\nid, software build and methodology version, plus the per-source register\nrecords (licence, commercial status, refresh cadence, dataset_version) AS\nTHEY STOOD at computation time. graph_snapshot_id commits to the\nschema/source register; data_snapshot_id commits to the observed data state\n(table row counts, last-update stamps, graph node counts) of every\ncontributing source at computation time — a state observation at\nintrospection grain, not a cryptographic commitment to row-level content.","operationId":"get_receipt_v2_receipts__receipt_id__get","parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceiptArchiveResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v2/receipts/{receipt_id}/export":{"get":{"tags":["receipts"],"summary":"Export Receipt","description":"Export a candidate-site-screen receipt as its client-ready artifact.\n\nformat=xlsx returns a workbook (exception ledger / findings / evidence /\nprovenance sheets); format=pdf returns the screening memo. With\ncompare={older_receipt_id} (xlsx only), the workbook gains a \"Changes\"\nsheet: the deterministic evidence diff from the older receipt to this\none — verdict flips with their driving check, findings added and removed,\nevidence gained and lost. Both render\nfrom the FROZEN receipt — never a recomputation — and carry the receipt\nid, the graph/data snapshot ids and the response hash so the artifact can\nbe verified against GET /v2/receipts/{receipt_id}. Access follows the\nreceipt's capability model: whoever holds the id can export it, no key\nrequired — the deliverable is designed to be forwarded.\n\nCurrently exportable: receipts computed by POST /v2/insights/siting/sites\n(the candidate-site screen) and POST /v2/insights/diligence/entities\n(the counterparty diligence screen). Other receipts return 409.","operationId":"export_receipt_v2_receipts__receipt_id__export_get","parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","title":"Receipt Id"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"xlsx","title":"Format"}},{"name":"compare","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Compare"}}],"responses":{"200":{"description":"The frozen answer as a client-ready artifact","content":{"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","format":"binary"}},"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["System"],"summary":"Health","description":"Check health of all backend services.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthStatus"}}}}}}},"/stats":{"get":{"tags":["System"],"summary":"Platform Stats","description":"Canonical platform statistics — served from the hourly introspection snapshot\n(the same document behind /api/schema, the schema page and /.well-known/kortex.json),\nso every public surface quotes IDENTICAL numbers. Redis-cached for 5 minutes.\nFalls back to live database counts only if the snapshot is unreadable.","operationId":"platform_stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformStats"}}}}}}},"/v2/stats/labels":{"get":{"tags":["System"],"summary":"Label Stats","description":"Live per-label node counts. Single source of truth for label cardinalities.\nCached in Redis for 5 minutes.","operationId":"label_stats_v2_stats_labels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Label Stats V2 Stats Labels Get"}}}}}}}},"components":{"schemas":{"AnnotationCreate":{"properties":{"kind":{"type":"string","title":"Kind"},"body":{"anyOf":[{"type":"string","maxLength":8000},{"type":"null"}],"title":"Body"},"item_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Item Id"},"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id"},"evidence":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Evidence"}},"type":"object","required":["kind"],"title":"AnnotationCreate"},"AnnotationList":{"properties":{"annotations":{"items":{"$ref":"#/components/schemas/AnnotationOut"},"type":"array","title":"Annotations"}},"type":"object","required":["annotations"],"title":"AnnotationList"},"AnnotationOut":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","title":"Kind"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"item_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Item Id"},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Run Id"},"evidence":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Evidence"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","kind","body","item_id","run_id","evidence","created_at"],"title":"AnnotationOut"},"CandidateEntity":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Caller's own identifier, echoed back"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Exact legal name (case-insensitive); ambiguous names are abstained on with candidates listed"},"lei":{"anyOf":[{"type":"string","maxLength":20,"minLength":20},{"type":"null"}],"title":"Lei","description":"LEI — the strongest identifier; resolves exactly"},"ch_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ch Number","description":"Companies House number (UK); numeric forms are zero-padded to 8"}},"type":"object","title":"CandidateEntity"},"CandidateSite":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Caller's own identifier, echoed back"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lng"},"load_mw":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Load Mw","description":"Per-site target load; falls back to the request-level load_mw"},"boundary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Boundary","description":"GeoJSON Polygon or MultiPolygon site boundary (WGS84; a MultiPolygon is a land assembly). When present, lat/lng may be omitted — the screen derives a representative point and measures distances from the boundary edge. The boundary is customer-asserted and verified against nothing; receipts echo its sha256 and area, never the outline itself."},"boundary_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Boundary Source","description":"Workspace evidence object the boundary was resolved from, when bridged via boundary_evidence_id"},"boundary_evidence_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Boundary Evidence Id","description":"Workspace only: id of an org geometry evidence object to resolve into this site's boundary at item write time. Ignored by the bare endpoint."},"power_evidence_ids":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":10},{"type":"null"}],"title":"Power Evidence Ids","description":"Workspace only: ids of org STRUCTURED evidence objects (operator responses, study extracts) resolved at item write time to ride beside this site's path-to-power ledger, classed customer_reported and unverified. They never change assessments, findings or verdicts. The bare endpoint has no organization context and ignores them."}},"type":"object","title":"CandidateSite"},"CaptureDeclineItem":{"properties":{"grid_key":{"type":"string","title":"Grid Key","description":"ENTSO-E bidding-zone code"},"fuel":{"type":"string","title":"Fuel","description":"solar | wind_onshore | wind_offshore"},"year":{"type":"integer","title":"Year"},"capture_price":{"type":"number","title":"Capture Price","description":"Generation-weighted day-ahead price — what the market PAID this output, never its cost. Native currency/MWh"},"base_price":{"type":"number","title":"Base Price","description":"Time-weighted average day-ahead price, same year/zone, native currency/MWh"},"capture_rate_pct":{"type":"number","title":"Capture Rate Pct","description":"capture/base ×100 — UNIT-FREE, comparable across currencies"},"penetration_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Penetration Pct","description":"Fuel's share of total generation energy, same year/zone"},"gen_gwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gen Gwh"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency","description":"Native market currency of the price LEVELS (rate is currency-free)"},"coverage_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coverage Pct"},"insufficient_coverage":{"type":"boolean","title":"Insufficient Coverage","description":"true when <85% of hours joined, <10 GWh output, or non-positive base — never rank or draw these"},"evidence_class":{"type":"string","enum":["observed","source_reported","transformed","inferred","heuristic","modelled"],"title":"Evidence Class","description":"'transformed' — deterministic hourly join of observed ENTSO-E generation × day-ahead prices; negative prices kept"},"basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basis"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"additionalProperties":true,"type":"object","required":["grid_key","fuel","year","capture_price","base_price","capture_rate_pct","insufficient_coverage","evidence_class"],"title":"CaptureDeclineItem"},"ChangeEvent":{"properties":{"investigation_id":{"type":"string","title":"Investigation Id"},"investigation_name":{"type":"string","title":"Investigation Name"},"run_id":{"type":"string","title":"Run Id"},"run_at":{"type":"string","title":"Run At"},"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"},"prev_receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prev Receipt Id"},"verdict_changes":{"items":{},"type":"array","title":"Verdict Changes"},"items_added":{"type":"integer","title":"Items Added"},"items_removed":{"type":"integer","title":"Items Removed"}},"type":"object","required":["investigation_id","investigation_name","run_id","run_at","receipt_id","prev_receipt_id","verdict_changes","items_added","items_removed"],"title":"ChangeEvent"},"ChangesFeed":{"properties":{"changes":{"items":{"$ref":"#/components/schemas/ChangeEvent"},"type":"array","title":"Changes"}},"type":"object","required":["changes"],"title":"ChangesFeed"},"CleanHoursSummaryItem":{"properties":{"code":{"type":"string","title":"Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"year":{"type":"integer","title":"Year","description":"Calendar year of the hourly series"},"hours":{"type":"integer","title":"Hours","description":"Calendar slots in the year (8784 leap) — nulls never interpolated"},"annual_clean_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Annual Clean Pct","description":"Clean share of domestic generation, annual energy basis"},"hours_clean90_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hours Clean90 Pct","description":"% of hours with clean share ≥90%"},"import_dependent_hours":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Import Dependent Hours","description":"Hours where net imports covered demand shortfall — NO fuel attribution"},"longest_low_clean_h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Longest Low Clean H"},"flat_load_mw":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Flat Load Mw","description":"Illustrative flat load for the matching metric"},"hourly_matched_coverage_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hourly Matched Coverage Pct","description":"Share of the flat load coverable from domestic clean SURPLUS hour-by-hour — illustrative, deliberately conservative, NOT procurement analysis"},"worst_hour_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Worst Hour Price"},"evidence_class":{"type":"string","enum":["observed","source_reported","transformed","inferred","heuristic","modelled"],"title":"Evidence Class","description":"'transformed' — deterministic hourly join/aggregation of observed ENTSO-E series"}},"additionalProperties":true,"type":"object","required":["code","year","hours","evidence_class"],"title":"CleanHoursSummaryItem"},"CongestionCorridorBlock":{"properties":{"corridor":{"additionalProperties":true,"type":"object","title":"Corridor","description":"Corridor identity, definition, cut and inputs (DE_NS_51.2 = German 51.2N axis; GB_NS_55.3 = B6 SPT->NGET boundary)"},"year":{"type":"integer","title":"Year"},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Hours solved, mean/p50/p90/p99/max/min transfer MW, share of south->north hours"},"peak_hour":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Peak Hour"},"monthly":{"items":{"$ref":"#/components/schemas/CongestionCorridorMonth"},"type":"array","title":"Monthly"},"duration_curve":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Duration Curve","description":"Transfer level exceeded in pct% of hours"},"validation":{"additionalProperties":true,"type":"object","title":"Validation","description":"Receipts from the frozen validation studies (gpkg_284 DE redispatch, gpkg_290 GB SO-flagged constraint energy) — statistics about this model, no operator rows served"}},"additionalProperties":true,"type":"object","required":["corridor","year","summary","monthly","duration_curve","validation"],"title":"CongestionCorridorBlock"},"CongestionCorridorMonth":{"properties":{"month":{"type":"integer","title":"Month"},"mean_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mean Mw"},"p90_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P90 Mw","description":"90th-percentile modelled north->south transfer that month, MW"},"max_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Mw"}},"additionalProperties":true,"type":"object","required":["month"],"title":"CongestionCorridorMonth"},"CongestionCorridorResponse":{"properties":{"evidence_class":{"type":"string","title":"Evidence Class","description":"'modelled' — hourly base-case DC power flow; corridor grain ONLY, no branch/overload/N-1 claims served"},"corridors":{"items":{"$ref":"#/components/schemas/CongestionCorridorBlock"},"type":"array","title":"Corridors"},"provenance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provenance"}},"additionalProperties":true,"type":"object","required":["evidence_class","corridors"],"title":"CongestionCorridorResponse"},"CorridorSensitivityResponse":{"properties":{"zone_from":{"type":"string","title":"Zone From"},"zone_to":{"type":"string","title":"Zone To"},"evidence_class":{"type":"string","title":"Evidence Class","description":"'modelled' — DC power flow on an open network; screening-grade, validated at border grain"},"borders":{"items":{"$ref":"#/components/schemas/CorridorSensitivityRow"},"type":"array","title":"Borders"},"provenance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provenance"}},"additionalProperties":true,"type":"object","required":["zone_from","zone_to","evidence_class","borders"],"title":"CorridorSensitivityResponse"},"CorridorSensitivityRow":{"properties":{"border":{"type":"string","title":"Border"},"mw_per_100mw":{"type":"number","title":"Mw Per 100Mw","description":"MW carried on this border per 100 MW exchanged zone_from -> zone_to, calibrated slope applied; sign positive in the border's alphabetical direction"},"mw_per_100mw_raw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mw Per 100Mw Raw","description":"Uncalibrated DC-model sensitivity"},"calibration":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Calibration","description":"M1 affine / M2 affine+PST-driver / uncalibrated — chosen out-of-sample per border (gpkg_277)"},"border_validation_r":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Border Validation R","description":"Out-of-sample Pearson r of the calibrated model on this border (2025 held-out hours)"}},"additionalProperties":true,"type":"object","required":["border","mw_per_100mw"],"title":"CorridorSensitivityRow"},"CypherRequest":{"properties":{"query":{"type":"string","title":"Query"},"params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Params"}},"type":"object","required":["query"],"title":"CypherRequest"},"DatasetVersion":{"properties":{"fingerprint":{"type":"string","title":"Fingerprint","description":"16-hex digest over the source's table row counts, last-update stamps and graph node counts as introspected (hourly); moves when the source's data moves, holds when only code or copy moves"},"tables":{"type":"integer","title":"Tables","description":"Registered tables feeding this source's fingerprint"},"rows":{"type":"integer","title":"Rows","description":"Sum of estimated row counts across those tables"},"graph_nodes":{"type":"integer","title":"Graph Nodes","description":"Sum of node counts across graph labels this source feeds"},"last_update":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Update","description":"Most recent table last-update stamp observed for this source"}},"additionalProperties":true,"type":"object","required":["fingerprint","tables","rows","graph_nodes"],"title":"DatasetVersion"},"DemandSignalCountry":{"properties":{"iso3":{"type":"string","title":"Iso3"},"name":{"type":"string","title":"Name"},"ev_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ev Year"},"ev_sales_share_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ev Sales Share Pct"},"ev_share_5y_delta_pp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ev Share 5Y Delta Pp"},"pop_latest":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pop Latest"},"pop_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pop Year"},"pop_growth_since_2000_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pop Growth Since 2000 Pct"},"buildings":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Buildings","description":"null = crosswalk miss (absence, never zero)"},"dc_facilities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dc Facilities"},"evidence_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Class"}},"additionalProperties":true,"type":"object","required":["iso3","name"],"title":"DemandSignalCountry"},"DemandSignalsResponse":{"properties":{"countries":{"items":{"$ref":"#/components/schemas/DemandSignalCountry"},"type":"array","title":"Countries"},"rates_context":{"additionalProperties":true,"type":"object","title":"Rates Context","description":"FRED latest: DGS10, T10Y2Y, BAA10Y — global backdrop, not per-country"},"note":{"type":"string","title":"Note"}},"additionalProperties":true,"type":"object","required":["countries","rates_context","note"],"title":"DemandSignalsResponse"},"DiffOut":{"properties":{"from_run":{"type":"string","title":"From Run"},"to_run":{"type":"string","title":"To Run"},"from_receipt":{"type":"string","title":"From Receipt"},"to_receipt":{"type":"string","title":"To Receipt"},"diff":{"additionalProperties":true,"type":"object","title":"Diff"},"summary":{"additionalProperties":true,"type":"object","title":"Summary"}},"type":"object","required":["from_run","to_run","from_receipt","to_receipt","diff","summary"],"title":"DiffOut"},"DiligenceScreenItems":{"properties":{"entities":{"items":{"$ref":"#/components/schemas/ScreenedEntity"},"type":"array","title":"Entities"},"verdict_counts":{"additionalProperties":true,"type":"object","title":"Verdict Counts"}},"additionalProperties":true,"type":"object","required":["entities","verdict_counts"],"title":"DiligenceScreenItems"},"DiligenceScreenRequest":{"properties":{"entities":{"items":{"$ref":"#/components/schemas/CandidateEntity"},"type":"array","maxItems":25,"minItems":1,"title":"Entities"}},"type":"object","required":["entities"],"title":"DiligenceScreenRequest"},"DiligenceScreenResponse":{"properties":{"provenance":{"$ref":"#/components/schemas/Provenance"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"},"items":{"$ref":"#/components/schemas/DiligenceScreenItems"}},"additionalProperties":true,"type":"object","required":["provenance","count","items"],"title":"DiligenceScreenResponse"},"EvalKeyRequest":{"properties":{"email":{"type":"string","maxLength":320,"minLength":5,"title":"Email"},"name":{"type":"string","maxLength":200,"minLength":2,"title":"Name"},"org":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Org"},"use_case":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Use Case"},"website":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Website"}},"type":"object","required":["email","name"],"title":"EvalKeyRequest"},"EvalKeyResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"message":{"type":"string","title":"Message"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"expires":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expires"},"scope":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scope"},"quickstart":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quickstart"},"workspace_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Url"},"workspace_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Note"}},"type":"object","required":["ok","message"],"title":"EvalKeyResponse"},"EvidenceContent":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","title":"Kind"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"source_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Note"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"},"mime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime"},"sha256":{"type":"string","title":"Sha256"},"size_bytes":{"type":"integer","title":"Size Bytes"},"evidence_class":{"type":"string","title":"Evidence Class","description":"Always customer_reported: stored verbatim, never merged into the public graph, never altering a verdict"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"deduplicated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deduplicated","description":"True when this upload matched an existing active object byte-for-byte and that object was returned"},"geojson":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geojson"},"content_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Base64"},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"}},"type":"object","required":["id","kind","name","description","source_note","filename","mime","sha256","size_bytes","evidence_class","status","created_at","updated_at"],"title":"EvidenceContent"},"EvidenceCreate":{"properties":{"kind":{"type":"string","title":"Kind"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Description"},"source_note":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Source Note","description":"Where this came from, in your words — e.g. 'DNO feasibility letter 2026-05-12' or 'our land agent's assembly outline'"},"geojson":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Geojson","description":"kind=geometry: any GeoJSON object (geometry, Feature or FeatureCollection), WGS84, stored verbatim"},"content_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Base64","description":"kind=document: the file bytes, base64-encoded"},"filename":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Filename"},"mime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime","description":"kind=document: allowlisted content type"},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload","description":"kind=structured: a JSON payload, stored verbatim"}},"type":"object","required":["kind","name"],"title":"EvidenceCreate"},"EvidenceList":{"properties":{"evidence":{"items":{"$ref":"#/components/schemas/EvidenceOut"},"type":"array","title":"Evidence"},"quota":{"additionalProperties":true,"type":"object","title":"Quota","description":"used_bytes / limit_bytes across the organization's active objects"}},"type":"object","required":["evidence","quota"],"title":"EvidenceList"},"EvidenceOut":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","title":"Kind"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"source_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Note"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"},"mime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime"},"sha256":{"type":"string","title":"Sha256"},"size_bytes":{"type":"integer","title":"Size Bytes"},"evidence_class":{"type":"string","title":"Evidence Class","description":"Always customer_reported: stored verbatim, never merged into the public graph, never altering a verdict"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"deduplicated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deduplicated","description":"True when this upload matched an existing active object byte-for-byte and that object was returned"}},"type":"object","required":["id","kind","name","description","source_note","filename","mime","sha256","size_bytes","evidence_class","status","created_at","updated_at"],"title":"EvidenceOut"},"EvidenceRemoved":{"properties":{"removed":{"type":"string","title":"Removed"},"note":{"type":"string","title":"Note"}},"type":"object","required":["removed","note"],"title":"EvidenceRemoved"},"FossilExposureItem":{"properties":{"operator":{"type":"string","title":"Operator","description":"LEGACY alias of source_operator_label (kept for compatibility)"},"source_operator_label":{"type":"string","title":"Source Operator Label","description":"Source-attested operator group string — may lag renames/divestitures"},"resolved_operating_entity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resolved Operating Entity","description":"Legal name of the capacity-weighted resolved entity — the authoritative identity"},"lei":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lei","description":"GLEIF LEI of the resolved entity; CE-SYNTH* = synthetic"},"legal_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Legal Name"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"cik":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"null"}],"title":"Cik","description":"SEC CIK — own listing, else ultimate parent's"},"ticker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker","description":"Exchange ticker — own listing, else ultimate parent's"},"entity_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Status"},"ultimate_parent_lei":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ultimate Parent Lei"},"identity_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Identity Source","description":"verified_curated | verified_auto | unverified | null"},"resolution_status":{"type":"string","title":"Resolution Status","description":"lei_matched | legal_name_only | sec_cik_only_no_gleif | unresolved_in_gleif | abstained_low_confidence (default: unverified stitches WITHHOLD identity — pass include_unverified=true to receive the weak claims) — reports that a record was SELECTED, never that the stitch is correct"},"entity_record_validity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Record Validity"},"operator_stitch_confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Operator Stitch Confidence"},"operator_stitch_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operator Stitch Method"},"identity_warnings":{"items":{"type":"string"},"type":"array","title":"Identity Warnings","description":"Machine-readable caveats; empty list = none"},"fossil_rev":{"type":"number","title":"Fossil Rev","description":"Modelled fossil revenue, USD/yr — screening-grade, not reported financials"},"low_carbon_rev":{"type":"number","title":"Low Carbon Rev","description":"Modelled low-carbon revenue, USD/yr"},"total_rev":{"type":"number","title":"Total Rev","description":"Modelled total revenue, USD/yr"},"fossil_pct":{"type":"number","title":"Fossil Pct","description":"% of modelled revenue from coal/gas/oil"},"low_carbon_pct":{"type":"number","title":"Low Carbon Pct"},"total_gens":{"type":"integer","title":"Total Gens","description":"Generators in the covered universe for this group"}},"additionalProperties":true,"type":"object","required":["operator","source_operator_label","resolution_status","identity_warnings","fossil_rev","low_carbon_rev","total_rev","fossil_pct","low_carbon_pct","total_gens"],"title":"FossilExposureItem"},"FossilExposureResponse":{"properties":{"provenance":{"$ref":"#/components/schemas/Provenance"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"},"items":{"items":{"$ref":"#/components/schemas/FossilExposureItem"},"type":"array","title":"Items"}},"additionalProperties":true,"type":"object","required":["provenance","count","items"],"title":"FossilExposureResponse"},"FuelMixEntry":{"properties":{"fuel":{"type":"string","title":"Fuel"},"sites":{"type":"integer","title":"Sites","description":"Canonical operational generator records"},"mw":{"type":"number","title":"Mw","description":"Installed capacity, MW — canonical operational units only (method capacity_weighted_mw_v2)"},"share_pct":{"type":"number","title":"Share Pct"}},"additionalProperties":true,"type":"object","required":["fuel","sites","mw","share_pct"],"title":"FuelMixEntry"},"GovernedRowsEnvelope":{"properties":{"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key"},"rows":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Rows"},"row_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Row Count"},"grain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grain"},"evidence_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Class"},"sources":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sources"},"licence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Licence"},"commercial_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commercial Status"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"additionalProperties":true,"type":"object","title":"GovernedRowsEnvelope","description":"Generic governed data envelope: rows + rights + retrieval identity.\nUsed by series/indicator/country detail endpoints whose row columns vary\nper key — the ENVELOPE is the stable contract; per-key columns are\ndocumented in the catalogue entry's `dimensions`/`grain`."},"GridCriticalityCountry":{"properties":{"country_iso2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Iso2"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"articulation_points":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Articulation Points"},"networked_substations":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Networked Substations"},"max_cutoff_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Cutoff Mw"}},"additionalProperties":true,"type":"object","title":"GridCriticalityCountry"},"GridCriticalityNode":{"properties":{"sub_id":{"type":"string","title":"Sub Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"OSM/OIM name; often absent — absence shown, never invented"},"country_iso2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Iso2"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lng":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lng"},"voltage_kv":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Voltage Kv"},"is_converter":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Converter"},"cutoff_subs":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cutoff Subs","description":"Substations disconnected from the component's main body if this node is removed (topology, not power flow)"},"cutoff_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cutoff Mw","description":"Generation MW attached to the severed side — screening severity, never an outage forecast"},"component_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Component Size"},"evidence_class":{"type":"string","enum":["observed","source_reported","transformed","inferred","heuristic","modelled"],"title":"Evidence Class","description":"'derived' — graph-topological analysis of mapped line topology"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"additionalProperties":true,"type":"object","required":["sub_id","evidence_class"],"title":"GridCriticalityNode"},"GridCriticalityResponse":{"properties":{"networked_substations":{"type":"integer","title":"Networked Substations"},"articulation_points":{"type":"integer","title":"Articulation Points"},"bridge_lines":{"type":"integer","title":"Bridge Lines"},"components":{"type":"integer","title":"Components"},"method":{"type":"string","title":"Method"},"source":{"type":"string","title":"Source"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"},"countries":{"items":{"$ref":"#/components/schemas/GridCriticalityCountry"},"type":"array","title":"Countries"},"nodes":{"items":{"$ref":"#/components/schemas/GridCriticalityNode"},"type":"array","title":"Nodes"}},"additionalProperties":true,"type":"object","required":["networked_substations","articulation_points","bridge_lines","components","method","source","countries","nodes"],"title":"GridCriticalityResponse"},"GridDayResponse":{"properties":{"code":{"type":"string","title":"Code"},"name":{"type":"string","title":"Name"},"seasons":{"additionalProperties":true,"type":"object","title":"Seasons","description":"'summer' (1 Jun-31 Aug) and 'winter' (Jan-Feb + Dec), both within `year`"},"year":{"type":"integer","title":"Year"},"basis":{"type":"string","title":"Basis"},"source":{"type":"string","title":"Source"},"updated_at":{"type":"string","title":"Updated At"}},"additionalProperties":true,"type":"object","required":["code","name","seasons","year","basis","source","updated_at"],"title":"GridDayResponse"},"GridSummary":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"zone_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Zone Key"},"total_revenue_bn":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Revenue Bn","description":"Modelled, USD bn/yr — screening-grade"},"avg_demand_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Demand Mw"},"peak_demand_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Peak Demand Mw"},"dirty_share_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dirty Share Pct"},"dominant_fuel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dominant Fuel"},"dominant_fuel_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dominant Fuel Pct"},"fuel_mix":{"anyOf":[{"items":{"$ref":"#/components/schemas/FuelMixEntry"},"type":"array"},{"type":"null"}],"title":"Fuel Mix"},"fuel_mix_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fuel Mix Method","description":"capacity_weighted_mw_v2 = canonical operational universe (decommissioned/cancelled/duplicate records excluded)"}},"additionalProperties":true,"type":"object","required":["id"],"title":"GridSummary"},"GridsResponse":{"properties":{"provenance":{"$ref":"#/components/schemas/Provenance"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"},"items":{"items":{"$ref":"#/components/schemas/GridSummary"},"type":"array","title":"Items"}},"additionalProperties":true,"type":"object","required":["provenance","count","items"],"title":"GridsResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthStatus":{"properties":{"status":{"type":"string","title":"Status","description":"ok | degraded | error"},"memgraph":{"type":"boolean","title":"Memgraph"},"timescaledb":{"type":"boolean","title":"Timescaledb"},"redis":{"type":"boolean","title":"Redis"},"version":{"type":"string","title":"Version"}},"type":"object","required":["status","memgraph","timescaledb","redis","version"],"title":"HealthStatus","description":"System health response."},"IndicatorCatalogueEntry":{"properties":{"sources":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sources"},"licence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Licence"},"commercial_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commercial Status","description":"cleared | licence_held | under_review | excluded (worst-of-sources)"},"serving":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serving","description":"available | held (excluded sources are held, not served)"},"key":{"type":"string","title":"Key"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"grain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grain"},"evidence_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Class"},"source_names":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Source Names"},"retrieve":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retrieve"}},"additionalProperties":true,"type":"object","required":["key"],"title":"IndicatorCatalogueEntry"},"InvestigationCreate":{"properties":{"type":{"type":"string","title":"Type"},"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"default_params":{"additionalProperties":true,"type":"object","title":"Default Params"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["type","name"],"title":"InvestigationCreate"},"InvestigationCreated":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"default_params":{"additionalProperties":true,"type":"object","title":"Default Params"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"items":{"items":{"$ref":"#/components/schemas/ItemOut"},"type":"array","title":"Items","default":[]}},"type":"object","required":["id","type","name","status","default_params","notes","created_at","updated_at"],"title":"InvestigationCreated"},"InvestigationDetail":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"default_params":{"additionalProperties":true,"type":"object","title":"Default Params"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"items":{"items":{"$ref":"#/components/schemas/ItemOut"},"type":"array","title":"Items","default":[]},"runs":{"items":{"$ref":"#/components/schemas/RunOut"},"type":"array","title":"Runs","default":[]}},"type":"object","required":["id","type","name","status","default_params","notes","created_at","updated_at"],"title":"InvestigationDetail"},"InvestigationList":{"properties":{"investigations":{"items":{"$ref":"#/components/schemas/InvestigationListEntry"},"type":"array","title":"Investigations"}},"type":"object","required":["investigations"],"title":"InvestigationList"},"InvestigationListEntry":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"default_params":{"additionalProperties":true,"type":"object","title":"Default Params"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"},"runs":{"type":"integer","title":"Runs"}},"type":"object","required":["id","type","name","status","default_params","notes","created_at","updated_at","runs"],"title":"InvestigationListEntry"},"InvestigationOut":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"default_params":{"additionalProperties":true,"type":"object","title":"Default Params"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","type","name","status","default_params","notes","created_at","updated_at"],"title":"InvestigationOut"},"InvestigationPatch":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"default_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Default Params"}},"type":"object","title":"InvestigationPatch"},"ItemOut":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"type":"string","title":"Kind"},"position":{"type":"integer","title":"Position"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"customer_evidence":{"items":{},"type":"array","title":"Customer Evidence"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","kind","position","payload","customer_evidence","status","created_at","updated_at"],"title":"ItemOut"},"ItemPatch":{"properties":{"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"},"customer_evidence":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Customer Evidence"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"}},"type":"object","title":"ItemPatch"},"ItemsAdd":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","minItems":1,"title":"Items"}},"type":"object","required":["items"],"title":"ItemsAdd"},"ItemsOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ItemOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"ItemsOut"},"LeadAccepted":{"properties":{"ok":{"type":"boolean","title":"Ok"},"message":{"type":"string","title":"Message"}},"type":"object","required":["ok","message"],"title":"LeadAccepted"},"LeadSubmission":{"properties":{"interest":{"type":"string","pattern":"^(pilot|evaluation_key|other)$","title":"Interest"},"name":{"type":"string","maxLength":200,"minLength":2,"title":"Name"},"email":{"type":"string","maxLength":320,"minLength":5,"title":"Email"},"org":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Org"},"message":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Message"},"source_page":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Source Page"},"website":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Website"}},"type":"object","required":["interest","name","email"],"title":"LeadSubmission"},"LinkRequest":{"properties":{"email":{"type":"string","maxLength":254,"title":"Email"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"}},"type":"object","required":["email"],"title":"LinkRequest"},"MeOut":{"properties":{"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"org":{"type":"string","title":"Org"},"org_slug":{"type":"string","title":"Org Slug"}},"type":"object","required":["email","name","org","org_slug"],"title":"MeOut"},"MonitorCreate":{"properties":{"cadence":{"type":"string","title":"Cadence"},"only_on_change":{"type":"boolean","title":"Only On Change","default":true}},"type":"object","required":["cadence"],"title":"MonitorCreate"},"MonitorList":{"properties":{"monitors":{"items":{"$ref":"#/components/schemas/MonitorOut"},"type":"array","title":"Monitors"}},"type":"object","required":["monitors"],"title":"MonitorList"},"MonitorOut":{"properties":{"id":{"type":"string","title":"Id"},"investigation_id":{"type":"string","title":"Investigation Id"},"cadence":{"type":"string","title":"Cadence"},"only_on_change":{"type":"boolean","title":"Only On Change"},"status":{"type":"string","title":"Status"},"last_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Run Id"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","investigation_id","cadence","only_on_change","status","last_run_id","created_at","updated_at"],"title":"MonitorOut"},"MonitorPatch":{"properties":{"cadence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cadence"},"only_on_change":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Only On Change"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","title":"MonitorPatch"},"NetworkEconomicsRow":{"properties":{"zone_key":{"type":"string","title":"Zone Key"},"network":{"type":"string","title":"Network","description":"electricity | gas | electricity_wires"},"unit":{"type":"string","title":"Unit","description":"USD/MWh (gas rows are USD/MWh thermal, natives on-row)"},"upstream_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Upstream Price","description":"Zonal wholesale (electricity: DA market; gas: US city gate / EU TTF hub). Null for reported-wires rows"},"delivered_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delivered Price","description":"End-consumer price, same unit"},"wedge":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Wedge","description":"delivered − upstream (sign-free: negative = capped retail below wholesale). For electricity_wires: utility-REPORTED delivery revenue per MWh"},"share_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Share Pct","description":"wedge / delivered — the unit-free cross-network comparator"},"basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basis"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"additionalProperties":true,"type":"object","required":["zone_key","network","unit"],"title":"NetworkEconomicsRow"},"OkOut":{"properties":{"ok":{"type":"boolean","title":"Ok"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["ok"],"title":"OkOut"},"OwnershipMapEdge":{"properties":{"s":{"type":"string","title":"S"},"t":{"type":"string","title":"T"},"type":{"type":"string","title":"Type"},"kind":{"type":"string","title":"Kind","description":"registry (GLEIF) | stitched (identity layer) | spatial (point-in-zone) | rollup (incl. capped assets)"}},"additionalProperties":true,"type":"object","required":["s","t","type","kind"],"title":"OwnershipMapEdge"},"OwnershipMapNode":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type","description":"CorporateEntity | Generator | Grid | Aggregate"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role","description":"ultimate_parent | subsidiary | asset | grid | aggregate"},"weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight"},"ctrl_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ctrl Mw"},"hidden_n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hidden N","description":"Aggregate nodes: capped-from-display count"}},"additionalProperties":true,"type":"object","required":["id","type","name","role"],"title":"OwnershipMapNode"},"OwnershipMapResponse":{"properties":{"root":{"type":"string","title":"Root","description":"Root LEI"},"nodes":{"items":{"$ref":"#/components/schemas/OwnershipMapNode"},"type":"array","title":"Nodes"},"edges":{"items":{"$ref":"#/components/schemas/OwnershipMapEdge"},"type":"array","title":"Edges"},"ledger":{"additionalProperties":true,"type":"object","title":"Ledger"},"stats":{"additionalProperties":true,"type":"object","title":"Stats"},"wholesale_sales":{"additionalProperties":true,"type":"object","title":"Wholesale Sales","description":"FERC EQR name-matched block; present=false honest for non-US groups; unit-suspect filings excluded with disclosure; ERCOT structurally absent"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence"}},"additionalProperties":true,"type":"object","required":["root","nodes","edges","ledger","stats","wholesale_sales","evidence"],"title":"OwnershipMapResponse"},"PlatformStats":{"properties":{"nodes":{"type":"integer","title":"Nodes"},"edges":{"type":"integer","title":"Edges"},"node_labels":{"type":"integer","title":"Node Labels"},"edge_types":{"type":"integer","title":"Edge Types"},"postgis_tables":{"type":"integer","title":"Postgis Tables"},"postgis_columns":{"type":"integer","title":"Postgis Columns"},"hypertables":{"type":"integer","title":"Hypertables"},"cron_jobs":{"type":"integer","title":"Cron Jobs"},"populated_tables":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Populated Tables"},"total_rows":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Rows"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of"}},"type":"object","required":["nodes","edges","node_labels","edge_types","postgis_tables","postgis_columns","hypertables","cron_jobs"],"title":"PlatformStats","description":"Platform-wide statistics — canonical hourly-snapshot numbers."},"PowerFibreItem":{"properties":{"zone_key":{"type":"string","title":"Zone Key"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"wholesale_usd_mwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Wholesale Usd Mwh"},"wholesale_basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wholesale Basis","description":"reported | imputed — imputed prices carry lower evidence weight"},"clean_firm_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Clean Firm Mw","description":"INSTALLED dispatchable low-carbon capacity, MW — never contracted/deliverable supply"},"ehv_substations":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ehv Substations","description":"≥275 kV, real topology only"},"dc_facilities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dc Facilities","description":"Digital-facility ecosystem count (peering/colocation/hyperscaler) — NOT fibre capacity, routes or latency"},"telecom_sites":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Telecom Sites"},"nearest_dc_km":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nearest Dc Km","description":"From the zone's INTERIOR point — exploratory statistic, not a siting conclusion"},"water_stress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Water Stress"},"evidence_class":{"type":"string","enum":["observed","source_reported","transformed","inferred","heuristic","modelled"],"title":"Evidence Class","description":"'transformed' — spatial joins of observed facility locations and reported/imputed prices"},"basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basis"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"additionalProperties":true,"type":"object","required":["zone_key","evidence_class"],"title":"PowerFibreItem"},"ProfileSection":{"properties":{"present":{"type":"boolean","title":"Present","description":"false = absence disclosed, never fabricated"},"rows":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rows"},"evidence_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Class"},"sources":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sources"},"commercial_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commercial Status"}},"additionalProperties":true,"type":"object","required":["present","rows"],"title":"ProfileSection"},"Provenance":{"properties":{"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of","description":"Snapshot timestamp the source register was read at"},"sources":{"items":{"$ref":"#/components/schemas/ProvenanceSource"},"type":"array","title":"Sources"},"methodology":{"type":"string","title":"Methodology"},"methodology_version":{"type":"string","title":"Methodology Version"},"confidence":{"type":"string","title":"Confidence","description":"Prose statement of what is observed vs modelled vs derived"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"},"source_register":{"type":"string","title":"Source Register"},"receipt":{"anyOf":[{"$ref":"#/components/schemas/Receipt"},{"type":"null"}]}},"additionalProperties":true,"type":"object","required":["sources","methodology","methodology_version","confidence","limitations","source_register"],"title":"Provenance"},"ProvenanceSource":{"properties":{"id":{"type":"string","title":"Id","description":"Source id in the register (kortex.orkora.com/sources)"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"licence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Licence","description":"Licence identifier, e.g. 'CC BY 4.0'"},"commercial_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commercial Status","description":"production_safe | under_review | excluded"},"refresh":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh","description":"Refresh cadence as registered"},"homepage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Homepage"},"dataset_version":{"anyOf":[{"$ref":"#/components/schemas/DatasetVersion"},{"type":"null"}],"description":"Observed data state of this source at computation time; null when the source has no mapped tables or labels"}},"additionalProperties":true,"type":"object","required":["id"],"title":"ProvenanceSource"},"QueueCohortItem":{"properties":{"cohort":{"type":"integer","title":"Cohort","description":"Queue-submission year"},"tech":{"type":"string","title":"Tech","description":"Technology family (hybrids under first technology; secondary components excluded)"},"region":{"type":"string","title":"Region"},"n":{"type":"integer","title":"N","description":"Requests in cohort"},"mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mw"},"n_op":{"type":"integer","title":"N Op","description":"Reached commercial operation"},"mw_op":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mw Op"},"n_wd":{"type":"integer","title":"N Wd","description":"Withdrawn"},"mw_wd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mw Wd"},"n_act":{"type":"integer","title":"N Act","description":"Still active — RIGHT-CENSORED: undecided, never 'failed'"},"mw_act":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mw Act"},"n_susp":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N Susp"},"n_act_ia":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N Act Ia","description":"Actives with executed interconnection agreement"},"med_years_to_op":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Med Years To Op"},"med_years_to_wd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Med Years To Wd"},"evidence_class":{"type":"string","enum":["observed","source_reported","transformed","inferred","heuristic","modelled"],"title":"Evidence Class","description":"'transformed' — deterministic cohort rollup of source-reported queue records (LBNL Queued Up, end-2024 vintage)"}},"additionalProperties":true,"type":"object","required":["cohort","tech","region","n","n_op","n_wd","n_act","evidence_class"],"title":"QueueCohortItem"},"Receipt":{"properties":{"receipt_id":{"type":"string","title":"Receipt Id","description":"Unique id for this computed answer (UUID)"},"computed_at":{"type":"string","title":"Computed At","description":"UTC ISO-8601 timestamp of computation"},"graph_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Graph Snapshot Id","description":"Content hash of the schema/source snapshot the answer was computed against"},"data_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Snapshot Id","description":"16-hex digest over the contributing sources' dataset_version fingerprints — commits to the observed data state of the answer's inputs; a changed data_snapshot_id under an unchanged graph_snapshot_id means the data moved, not the schema"},"response_sha256":{"type":"string","title":"Response Sha256","description":"SHA-256 of the canonical JSON of `items` — equal hashes are the same answer; a changed hash under an unchanged graph_snapshot_id means the code moved, not the world"},"software_build":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Software Build"},"request_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request Parameters","description":"Echo of the request parameters that produced this answer"},"retrieve":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retrieve","description":"GET this path to replay the FROZEN answer later — the archive returns the canonical response as computed, not a recomputation"}},"additionalProperties":true,"type":"object","required":["receipt_id","computed_at","response_sha256"],"title":"Receipt"},"ReceiptArchiveResponse":{"properties":{"receipt_id":{"type":"string","title":"Receipt Id"},"computed_at":{"type":"string","title":"Computed At"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"},"request_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Request Parameters"},"graph_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Graph Snapshot Id"},"data_snapshot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Snapshot Id","description":"Commitment to the observed data state of the contributing sources at computation time (null on receipts archived before 2026-07-12)"},"software_build":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Software Build"},"methodology_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Methodology Version"},"response_sha256":{"type":"string","title":"Response Sha256"},"canonical_response":{"anyOf":[{"items":{},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Canonical Response","description":"The FROZEN answer as computed — not a recomputation"},"source_versions":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Source Versions","description":"Per-source register records as they stood at computation time, including each source's dataset_version fingerprint from 2026-07-12 onward"},"supersedes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supersedes"},"superseded_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Superseded By"},"verification":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification"}},"additionalProperties":true,"type":"object","required":["receipt_id","computed_at","response_sha256"],"title":"ReceiptArchiveResponse"},"RedeemRequest":{"properties":{"token":{"type":"string","maxLength":200,"minLength":8,"title":"Token"}},"type":"object","required":["token"],"title":"RedeemRequest"},"RemovedOut":{"properties":{"removed":{"type":"string","title":"Removed"}},"type":"object","required":["removed"],"title":"RemovedOut"},"RunList":{"properties":{"runs":{"items":{"$ref":"#/components/schemas/RunOut"},"type":"array","title":"Runs"}},"type":"object","required":["runs"],"title":"RunList"},"RunOut":{"properties":{"id":{"type":"string","title":"Id"},"run_at":{"type":"string","title":"Run At"},"params":{"additionalProperties":true,"type":"object","title":"Params"},"input_sha256":{"type":"string","title":"Input Sha256"},"receipt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Id"},"retrieve":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retrieve"},"prev_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prev Run Id"},"triggered_by":{"type":"string","title":"Triggered By"},"verdict_counts":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Verdict Counts"},"diff_summary":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Diff Summary"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["id","run_at","params","input_sha256","receipt_id","retrieve","prev_run_id","triggered_by","verdict_counts","diff_summary","status","error"],"title":"RunOut"},"RunRequest":{"properties":{"params":{"additionalProperties":true,"type":"object","title":"Params"}},"type":"object","title":"RunRequest"},"RunResult":{"properties":{"run":{"$ref":"#/components/schemas/RunOut"},"diff":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Diff"},"result":{"additionalProperties":true,"type":"object","title":"Result"}},"type":"object","required":["run","diff","result"],"title":"RunResult"},"ScreenedEntity":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"submitted":{"additionalProperties":true,"type":"object","title":"Submitted"},"verdict":{"type":"string","enum":["proceed","investigate","reject","insufficient_evidence"],"title":"Verdict","description":"Hard gates and abstention, not a score: reject = a gate failed (exact primary sanctions match, or the registry says the entity has ceased); insufficient_evidence = identity unresolved/ambiguous or the decision cannot be defended on available evidence; investigate = material findings need resolving; proceed = no visible screening-level disqualifier — never a clean bill"},"material_findings":{"items":{"$ref":"#/components/schemas/SiteFinding"},"type":"array","title":"Material Findings"},"next_action":{"type":"string","title":"Next Action"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence","description":"Per-check evidence blocks, each with present flag, grain and note"},"resolution_candidates":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Resolution Candidates","description":"When identity is unresolved or ambiguous: the register candidates considered"},"coverage":{"$ref":"#/components/schemas/SiteCoverage"}},"additionalProperties":true,"type":"object","required":["submitted","verdict","material_findings","next_action","evidence","coverage"],"title":"ScreenedEntity"},"ScreenedSite":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"lat":{"type":"number","title":"Lat","description":"Submitted point, or the representative point derived from the boundary (point_derived=true)"},"lng":{"type":"number","title":"Lng"},"load_mw":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Load Mw"},"boundary_sha256":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Boundary Sha256","description":"sha256 of the submitted boundary geometry (canonical JSON) — the receipt's verifiable reference to an outline it deliberately does not store"},"area_ha":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Area Ha","description":"Boundary area in hectares"},"point_derived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Point Derived","description":"True when lat/lng were derived from the boundary (ST_PointOnSurface), not submitted"},"verdict":{"type":"string","enum":["proceed","investigate","reject","insufficient_evidence"],"title":"Verdict","description":"Hard gates and abstention, not a score: reject = a gate failed; insufficient_evidence = the decision cannot be defended on available evidence; investigate = material findings need resolving; proceed = no visible screening-level disqualifier"},"material_findings":{"items":{"$ref":"#/components/schemas/SiteFinding"},"type":"array","title":"Material Findings"},"next_action":{"type":"string","title":"Next Action"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence","description":"Per-check evidence blocks, each with present flag, grain and note"},"coverage":{"$ref":"#/components/schemas/SiteCoverage"}},"additionalProperties":true,"type":"object","required":["lat","lng","verdict","material_findings","next_action","evidence","coverage"],"title":"ScreenedSite"},"SectionedProfileResponse":{"properties":{"sections":{"additionalProperties":{"$ref":"#/components/schemas/ProfileSection"},"type":"object","title":"Sections","description":"One entry per registered section; absent sections present=false"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"additionalProperties":true,"type":"object","required":["sections"],"title":"SectionedProfileResponse"},"SeriesCatalogueEntry":{"properties":{"sources":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sources"},"licence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Licence"},"commercial_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commercial Status","description":"cleared | licence_held | under_review | excluded (worst-of-sources)"},"serving":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serving","description":"available | held (excluded sources are held, not served)"},"key":{"type":"string","title":"Key"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"grain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Grain"},"dimensions":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Dimensions"},"evidence_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Evidence Class"},"source_names":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Source Names"},"retrieve":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retrieve"}},"additionalProperties":true,"type":"object","required":["key"],"title":"SeriesCatalogueEntry"},"SiteCoverage":{"properties":{"checks":{"type":"integer","title":"Checks"},"with_evidence":{"type":"integer","title":"With Evidence"},"absent":{"items":{"type":"string"},"type":"array","title":"Absent","description":"Checks with no evidence at this point — coverage gaps, not clean bills"}},"additionalProperties":true,"type":"object","required":["checks","with_evidence","absent"],"title":"SiteCoverage"},"SiteFinding":{"properties":{"check":{"type":"string","title":"Check"},"finding":{"type":"string","title":"Finding"},"implication":{"type":"string","title":"Implication"},"evidence_quality":{"type":"string","title":"Evidence Quality"},"next_action":{"type":"string","title":"Next Action"}},"additionalProperties":true,"type":"object","required":["check","finding","implication","evidence_quality","next_action"],"title":"SiteFinding"},"SiteScreenItems":{"properties":{"sites":{"items":{"$ref":"#/components/schemas/ScreenedSite"},"type":"array","title":"Sites"},"verdict_counts":{"additionalProperties":true,"type":"object","title":"Verdict Counts"}},"additionalProperties":true,"type":"object","required":["sites","verdict_counts"],"title":"SiteScreenItems"},"SiteScreenRequest":{"properties":{"sites":{"items":{"$ref":"#/components/schemas/CandidateSite"},"type":"array","maxItems":50,"minItems":1,"title":"Sites"},"load_mw":{"type":"number","exclusiveMinimum":0.0,"title":"Load Mw","description":"Target load applied to sites without their own","default":300},"min_kv":{"type":"number","exclusiveMinimum":0.0,"title":"Min Kv","description":"Minimum substation voltage for the connection gate, kV","default":275},"firm_clean_only":{"type":"boolean","title":"Firm Clean Only","description":"Raise a finding when zone clean-firm supply is below the target load","default":true}},"type":"object","required":["sites"],"title":"SiteScreenRequest"},"SiteScreenResponse":{"properties":{"provenance":{"$ref":"#/components/schemas/Provenance"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"},"items":{"$ref":"#/components/schemas/SiteScreenItems"}},"additionalProperties":true,"type":"object","required":["provenance","count","items"],"title":"SiteScreenResponse"},"SitingCandidate":{"properties":{"zone":{"type":"string","title":"Zone","description":"Market/TSO zone key, e.g. NO-NO2"},"country":{"type":"string","title":"Country"},"verdict":{"type":"string","title":"Verdict"},"score":{"type":"number","title":"Score","description":"LEGACY blended scalar (suitability × confidence on the water term) — default sort, kept for compatibility"},"suitability_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Suitability Score","description":"Decision-weights result with evidence taken at face value (clean-firm 0.42 / price 0.24 / EHV 0.16 / water 0.18)"},"evidence_confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Evidence Confidence","description":"Completeness/reliability of the evidence: 1.0 = all observed; downweighted for imputed price, unresolved water, absent queue coverage"},"why_it_survives":{"items":{"type":"string"},"type":"array","title":"Why It Survives"},"watch_items":{"items":{"type":"string"},"type":"array","title":"Watch Items","description":"Per-zone caveats, e.g. queue coverage gaps"},"clean_firm_mw":{"type":"number","title":"Clean Firm Mw","description":"Dispatchable low-carbon capacity in zone, MW — wind/solar NEVER counted firm"},"variable_clean_mw":{"type":"number","title":"Variable Clean Mw","description":"Wind/solar capacity, MW — reported, not firm"},"fossil_mw":{"type":"number","title":"Fossil Mw"},"wholesale_usd_mwh":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Wholesale Usd Mwh","description":"Zone wholesale, USD/MWh"},"ehv_substations":{"type":"integer","title":"Ehv Substations","description":"Substations at/above the requested kV, real topology only"},"best_kv":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Best Kv"},"water_stress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Water Stress","description":"WRI Aqueduct basin score, 0-5"},"critical_cooling_plants":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Critical Cooling Plants"},"data_confidence":{"additionalProperties":true,"type":"object","title":"Data Confidence","description":"Per-field evidence basis, e.g. wholesale_price observed|imputed"},"demand_context":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Demand Context","description":"Zone-grain demand trajectory (GHSL GHS-POP 1km zonal sums): population_2025, population_growth_2000_2025_pct, density_km2. CONTEXT ONLY — never part of the suitability score; present=false when no zonal sum exists"},"counterparty":{"additionalProperties":true,"type":"object","title":"Counterparty","description":"direct_operator + ultimate_parent of the zone TSO"}},"additionalProperties":true,"type":"object","required":["zone","country","verdict","score","why_it_survives","watch_items","clean_firm_mw","variable_clean_mw","fossil_mw","ehv_substations","data_confidence","counterparty"],"title":"SitingCandidate"},"SitingItems":{"properties":{"candidates":{"items":{"$ref":"#/components/schemas/SitingCandidate"},"type":"array","title":"Candidates"},"rejected":{"items":{"$ref":"#/components/schemas/SitingRejection"},"type":"array","title":"Rejected"}},"additionalProperties":true,"type":"object","required":["candidates","rejected"],"title":"SitingItems"},"SitingRejection":{"properties":{"zone":{"type":"string","title":"Zone"},"country":{"type":"string","title":"Country"},"dominant_constraint":{"type":"string","title":"Dominant Constraint","description":"The single constraint that excluded this zone"}},"additionalProperties":true,"type":"object","required":["zone","country","dominant_constraint"],"title":"SitingRejection"},"SitingResponse":{"properties":{"provenance":{"$ref":"#/components/schemas/Provenance"},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"},"items":{"$ref":"#/components/schemas/SitingItems"}},"additionalProperties":true,"type":"object","required":["provenance","count","items"],"title":"SitingResponse"},"TableCatalogueEntry":{"properties":{"sources":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sources"},"licence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Licence"},"commercial_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commercial Status","description":"cleared | licence_held | under_review | excluded (worst-of-sources)"},"serving":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serving","description":"available | held (excluded sources are held, not served)"},"table":{"type":"string","title":"Table"},"est_rows":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Est Rows","description":"Planner estimate, not an exact count"},"columns":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Columns"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"provenance_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provenance Status"},"retrieve":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Retrieve","description":"GET path for the rows"}},"additionalProperties":true,"type":"object","required":["table"],"title":"TableCatalogueEntry"},"TableCatalogueResponse":{"properties":{"count":{"type":"integer","title":"Count"},"tables":{"items":{"$ref":"#/components/schemas/TableCatalogueEntry"},"type":"array","title":"Tables"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"additionalProperties":true,"type":"object","required":["count","tables"],"title":"TableCatalogueResponse"},"TableRowsResponse":{"properties":{"table":{"type":"string","title":"Table"},"rows":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rows","description":"Raw governed rows; columns are the table's own"},"row_count":{"type":"integer","title":"Row Count"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"commercial_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Commercial Status"},"licence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Licence"},"provenance_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provenance Status"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"additionalProperties":true,"type":"object","required":["table","rows","row_count"],"title":"TableRowsResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WaterPortfolioItem":{"properties":{"group_canonical":{"type":"string","title":"Group Canonical"},"fleet_plants":{"type":"integer","title":"Fleet Plants"},"fleet_mw":{"type":"number","title":"Fleet Mw"},"linked_plants":{"type":"integer","title":"Linked Plants","description":"Thermal plants with a cooling link in the graph"},"linked_mw":{"type":"number","title":"Linked Mw"},"coverage_pct":{"type":"number","title":"Coverage Pct","description":"Linked share of fleet MW — coverage is NOT accuracy"},"insufficient_coverage":{"type":"boolean","title":"Insufficient Coverage","description":"true when <60% MW linked or <5 plants — display as under-evidenced, NEVER rank"},"water_systems":{"type":"integer","title":"Water Systems","description":"Independent hydrological clusters (level-6 Pfafstetter ∪ same-river chains)"},"n_eff":{"type":"number","title":"N Eff"},"largest_share_pct":{"type":"number","title":"Largest Share Pct"},"largest_mw":{"type":"number","title":"Largest Mw"},"largest_plants":{"type":"integer","title":"Largest Plants"},"largest_stress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Largest Stress","description":"Max WRI Aqueduct baseline stress (0-5) among the largest system's dams — basin-level, not site-measured"},"evidence_class":{"type":"string","enum":["observed","source_reported","transformed","inferred","heuristic","modelled"],"title":"Evidence Class","description":"'inferred' — Dam→SUPPLIES_COOLING→Generator links are derived relationships. US edges are validated against EIA-860 cooling filings (study 8; contradictions quarantined and excluded); non-US edges remain unvalidated"},"basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basis"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"additionalProperties":true,"type":"object","required":["group_canonical","fleet_plants","fleet_mw","linked_plants","linked_mw","coverage_pct","insufficient_coverage","water_systems","n_eff","largest_share_pct","largest_mw","largest_plants","evidence_class"],"title":"WaterPortfolioItem"},"WeatherPortfolioItem":{"properties":{"group_canonical":{"type":"string","title":"Group Canonical","description":"Resolved operator group (validated labels)"},"fuel":{"type":"string","title":"Fuel","description":"Wind | Solar"},"assets":{"type":"integer","title":"Assets","description":"Assets IN THE KORTEX GRAPH — no completeness claim"},"mw":{"type":"number","title":"Mw","description":"In-graph capacity, MW"},"countries":{"type":"integer","title":"Countries"},"n_eff":{"type":"number","title":"N Eff","description":"Effective independent weather positions = 1/(w'Rw) over DIRECT pairwise edges"},"clusters":{"type":"integer","title":"Clusters"},"largest_share_pct":{"type":"number","title":"Largest Share Pct","description":"% of MW in the largest co-moving (meso-or-tighter) cluster"},"largest_cluster_mw":{"type":"number","title":"Largest Cluster Mw"},"largest_cluster_assets":{"type":"integer","title":"Largest Cluster Assets"},"largest_cluster_countries":{"type":"integer","title":"Largest Cluster Countries"},"corr_pairs":{"type":"integer","title":"Corr Pairs","description":"Direct pairwise proxy edges used"},"evidence_class":{"type":"string","enum":["observed","source_reported","transformed","inferred","heuristic","modelled"],"title":"Evidence Class","description":"'heuristic' — R uses distance-band weights (0.9/0.7/0.5/0.3), NOT measured meteorology; measured multi-year correlations are the declared upgrade"},"basis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basis"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"updated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated At"}},"additionalProperties":true,"type":"object","required":["group_canonical","fuel","assets","mw","countries","n_eff","clusters","largest_share_pct","largest_cluster_mw","largest_cluster_assets","largest_cluster_countries","corr_pairs","evidence_class"],"title":"WeatherPortfolioItem"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}},"tags":[{"name":"Insights","description":"**Start here.** Pre-computed cross-domain screening queries that traverse energy, corporate, climate and queue data stitched together in one graph — the joins are pre-built and provenance-first, so answers arrive ranked, sourced and auditable. Screening-grade by design: they rank and eliminate, they do not replace specialist studies."},{"name":"Grids","description":"Electricity market zones worldwide (ISOs, TSOs, balancing authorities — live count: GET /v2/stats/labels). Each grid zone has revenue estimates, fuel mix, demand profiles, and cross-border flow data. Grids are the primary unit of analysis — not countries. PJM and ERCOT are separate rows; 'USA' is not."},{"name":"Generators","description":"Power plants globally (live count: GET /v2/stats/labels) with capacity, fuel type, estimated revenue, water stress, carbon pricing exposure, planned retirement dates, operator ownership, weather correlation, and competitive dynamics. Searchable by any combination of fuel, grid, revenue, capacity, water stress, or operator."},{"name":"Operators","description":"Corporate entities operating energy infrastructure. Revenue consolidated across subsidiaries using GLEIF legal entity data and manual entity resolution; the live consolidated-revenue rollup is published on the landing page."},{"name":"Graph","description":"Direct traversal of the Kortex knowledge graph across all node labels and relationship types (live counts at GET /stats). Supports arbitrary N-hop traversals from any node, or read-only Cypher queries for custom analysis. Write operations are blocked."},{"name":"Time Series","description":"Billions of rows of temporal data: wholesale electricity prices (53 ISOs/TSOs), generation dispatch by fuel type, demand profiles, and balancing authority interchange flows. Supports hourly, daily, and monthly resolution with automatic aggregation."},{"name":"Reference","description":"Lookup tables: country crosswalk (791 aliases to ISO codes), fuel type taxonomy with generator counts, grid zone metadata, and the complete platform data register (all tables, columns, and node/edge types; live totals at GET /stats)."},{"name":"System","description":"Health checks, platform statistics, and cache management."}]}