The data
The capacity model
A capacity record is one value, with everything needed to read it correctly. This page lists every field and every member of every vocabulary.
One record, one series
A record is the current value of a series: one dimension of one operator record, fixed for its whole life: asset, direction, technology, availability type, firmness, curtailment band, horizon, scenario, season, variant, unit and methodology. When the operator republishes, the series gets a new value and the old one moves to its history. id (cap_…) identifies the value, series_id (cs_…) the series.
Every vocabulary below is closed, and every one has an unknown (or equivalent) member. That is deliberate. The failure it prevents is an adapter guessing: mapping one operator’s “reserved” onto another’s “allocated” because the words are close, or tagging a figure battery because the page mentions storage. When the source does not say, the answer is unknown, and records with unknown dimensions are returned only with comparability=raw.
direction
| Value | Meaning |
|---|---|
| injection | Power flowing into the grid at the connection: generation, or storage discharging. |
| offtake | Power drawn from the grid at the connection: demand, or storage charging. Storage appears once per direction, because operators publish the two separately and they are rarely equal. |
| bidirectional | The operator publishes one figure that applies to both directions at once. |
| unknown | The source does not say which way the figure applies. Returned only with comparability=raw. |
technology
Tagged only when the operator distinguishes the technology itself. A generic injection figure is generic_generation, however solar the region is.
| Value | Meaning |
|---|---|
| generic_generation | A generation figure the operator does not split by technology. Not solar_pv, however solar the region is. |
| generic_load | A demand figure the operator does not split by technology. |
| solar_pv | The operator publishes a figure for solar PV. |
| wind_onshore | The operator publishes a figure for onshore wind. |
| wind_offshore | The operator publishes a figure for offshore wind. |
| battery | The operator publishes a figure for battery storage. |
| storage_other | Storage the operator names but not as batteries. |
| hydrogen | The operator publishes a figure for hydrogen. |
| electrolyser | The operator publishes a figure for electrolysers. |
| ev_charging | The operator publishes a figure for vehicle charging. |
| data_center | The operator publishes a figure for data centres. |
| other | A technology the operator names that fits no member above. |
| unknown | The source does not say. Returned only with comparability=raw. |
capacity.type: what the number counts
| Value | Meaning |
|---|---|
| available | What remains, by the operator's own method, after whatever that method subtracts. The methodology's includes_* flags say what was subtracted. |
| total | The operator's total hosting capacity before anything is subtracted. Not a headroom figure: what is left for a new connection is a different number, when the operator publishes it at all. |
| requested | Capacity asked for in connection requests the operator has received and not yet decided. |
| reserved | Capacity set aside for accepted requests that are not yet connected. Kept distinct from allocated and pre-reserved wherever the operator distinguishes the stages. |
| allocated | Capacity assigned to specific parties under the operator's process. |
| pre_reserved | An earlier stage than reserved in operators that publish one (Elia, for example). |
| connected | Capacity of installations already connected. |
| waitlisted | Capacity in the operator's queue for when capacity becomes available. |
| contracted | Capacity under existing connection or transport contracts. |
| installed | Installed capacity at the asset, such as a transformer rating, published beside headroom figures. |
| unknown | The source does not say what the figure counts. Returned only with comparability=raw. |
total is not available
total is the operator’s whole hosting capacity before anything is subtracted. available is what remains by the operator’s own method, and that method decides what “remains” means, which is why the methodology says whether it takes reserved, allocated and pre-reserved capacity and pending requests into account. The API never computes one from the other: subtracting a queue from a total produces a figure no operator published. The search defaults to availability_type=available; ask for others explicitly.capacity.qualifier
Some operators publish a bound rather than a number: “more than 10”, “about 5”. The number goes in value and the bound in qualifier (>, <, >=, <= or ~), which is null when the figure is exact. Read the two together: a value of 10 with qualifier > is not a published 10.
capacity.unit and value_mw
| Unit | Meaning |
|---|---|
| MW | Megawatts of active power. value_mw equals value. |
| kW | Kilowatts of active power. value_mw is value / 1000. |
| MVA | Megavolt-amperes of apparent power. value_mw is null: converting needs a power factor the operator did not publish. |
| kVA | Kilovolt-amperes of apparent power. value_mw is null, for the same reason. |
| A | Amperes, a current limit. value_mw is null. |
| kA | Kiloamperes, a current limit. value_mw is null. |
| GWh | Energy over a period, not capacity. value_mw is null. |
| count | A number of things, such as requests in a queue. value_mw is null. |
| percent | A share, such as a curtailment level. value_mw is null. |
| status | A categorical value: see capacity.status and the operator's own label in capacity.status_label. value is null. |
Why MVA is never converted
MW is active power; MVA is apparent power. Between them sits the power factor, which depends on the connection and which operators publishing MVA do not state. Assuming one (0.9, say, or 0.95) would print a number with the authority of the operator that the operator never published, and a customer reading 100 MW where the operator wrote 100 MVA has been told something false.
value_mwis set forMW(equal tovalue) andkW(divided by 1,000), and isnullfor everything else.min_capacity_mwandmax_capacity_mwfilter onvalue_mw, so an MVA record can never satisfy them.- To filter in another unit, name it:
unit=MVA&min_capacity=10.
capacity.status: categorical values
Some operators publish a traffic light rather than a number. Those records have unit: "status", value: null, a normalised status, and the operator’s own words in status_label, because “orange” at one operator is not “orange” at another.
| Value | Meaning |
|---|---|
| available | The operator's map says capacity is available. |
| limited | The operator's map says capacity is limited. |
| unavailable | The operator's map says no capacity is available. |
| waitlist | The operator operates a waiting list for this area. |
| under_study | The operator is studying the area and publishes no verdict. |
| unknown | The operator's category has no equivalent above. Its own label is still in status_label. |
firmness and curtailment
| Value | Meaning |
|---|---|
| firm | Offered without curtailment. |
| flexible | Offered with a stated maximum curtailment, carried in curtailment.max_annual_percent (Elia's 5, 10 and 20 % bands, for example). |
| conditional | Offered subject to conditions other than a curtailment band, such as a non-firm connection agreement. |
| unknown | The source does not say whether the figure is firm. |
curtailment is { max_annual_percent } for flexible capacity and null otherwise. A flexible offer with at most 5 % curtailment a year is a different series from the same asset’s firm offer, and from its 10 % offer.
horizon, scenario, season, variant
| horizon.type | Meaning |
|---|---|
| snapshot | The situation now, as last published. year and label are null. |
| target_year | A future year the operator publishes for, in year; label carries the operator's own name for it, such as Y+2. |
| period | A stated period, described in label. |
scenario: a forecast pathway, such as a future-energy-scenarios name.nullwhen the operator publishes a single view.season:winterorsummerwhere the operator publishes seasonal ratings.variant: the operator’s own discriminator, such asmv_30kv, where a record splits further.details: qualifiers the operator states about the value, verbatim. For example a limiting factor, or an “at voltage ceiling” flag.
methodology
| Field | Meaning |
|---|---|
| id, title | The methodology, versioned per source. GET /v1/methodologies/{id} has its summary, disclaimers and documentation link. |
| capacity_basis | How the figure comes about: operator_calculated (the operator computed it), operator_published (the operator states it, such as a queue or a rating), derived, or unknown. |
| network_state | The network condition the operator studied: n (intact), n_minus_1 (with an outage), n_and_n_minus_1, or unknown. |
| binding | Whether the operator treats the figure as binding. The flag repeats what the operator says; decision_context repeats it on every record. |
| non_additive | When true, figures must not be summed across assets: they share upstream constraints. |
| includes_reserved, includes_allocated, includes_pre_reserved, includes_pending_requests | Whether the operator's method takes each category into account: for an available figure, whether it is already deducted; for a contracted figure, whether it is counted in. null means the operator does not say, and it is never guessed. |
| comparability_class | Records may be compared side by side only within one class. See comparability. |
asset
Every record embeds its asset: our own opaque id (the prefix names the type, so a zone id pasted where a substation id belongs fails as invalid_parameter), the operator, the name as published, voltage, network level and location.
| asset.type | Meaning |
|---|---|
| substation | A substation, at the voltage the source gives. |
| node | A network node, as the operator models it. |
| busbar | A busbar within a substation. |
| feeder | A feeder or circuit. |
| transformer | A transformer. |
| congestion_zone | An area the operator declares congested or constrained. |
| connection_point | A point the operator offers for connection. |
| grid_cell | A cell of a regular grid the operator publishes on. |
| area | A supply area, often defined by postcodes rather than geometry. |
location.precision
We never improve on the precision an operator gave. Some operators shift or remove substation coordinates for public-safety reasons; those stay shifted or removed, and are never re-derived from another dataset.
| Value | Meaning |
|---|---|
| exact | Coordinates as the operator published them. |
| approximate | The operator gives an approximate position. |
| obfuscated | The operator deliberately shifts positions, often for public-safety reasons. We never correct it from another source. |
| municipality | Only the municipality is known; the point is its centre. |
| region | Only the region is known; the point is its centre. |
| none | The operator publishes no location. |
| unknown | The precision is not stated. |
freshness, provenance, access, decision_context
freshness: the operator’s effective date, our retrieval time, when we last confirmed it unchanged, and the source’s health. Freshness and history.provenance: the source id, the operator’s own record id, the URL of the publication, the SHA-256 of the payload it came from, the licence and the rights mode.access:grantedwith the attribution to show, orwithheldwith the reason and the operator’s URL. Rights and licensing.decision_context:binding,source_indicative,formal_connection_study_required(alwaystrue) and astatementto show people: what the operator’s dataset reports, never that capacity is available to them.