Home / Specifications / cdsc-wg2-03
- API Interface
API Interface
Below is a rendering of this specification in our github repository: https://github.com/carbon-data-specification/Power-Systems-Data/blob/main/specifications/cdsc-wg2-03.md
CDSC-WG2 - Endpoints
Version: 0.0.2 Status: Draft
- API Interface
- CDSC-WG2 - Endpoints
- 1. Foreword
- 2. Introduction
- 3. Normative references
- 4. Terminology and Identification
- 5. Endpoint Categories
- 5.1 PowerSystemResource,Metadata
- 5.1.1 Topology Level (List)
power-system-resources/list-topology-levels
- 5.1.2 PSR (List)
/power-system-resources/list-resources
- 5.1.3 PSR Topology (List)
/power-system-resource/{id}/topology
- 5.1.4 PSR Describe
/power-system-resource/{id}/describe
- 5.1.5 PSR Capacity
/power-system-resource/{id}/capacity
- 5.1.6 PSR Transmission Capacity
/power-system-resource/{id}/transmission-capacity
- 5.1.1 Topology Level (List)
- 5.2 PowerSystemResource Timeseries Data
- 5.2.1 PSR Emissions
/power-system-resource/{id}/emissions
- 5.2.2 PSR Generation
/power-system-resource/{id}/generation
- 5.2.3 PSR Demand
/power-system-resource/{id}/demand
- 5.2.4 PSR Imports
/power-system-resource/{id}/imports
- 5.2.5 PSR Exports
/power-system-resource/{id}/exports
- 5.2.6 PSR Prices
/power-system-resource/{id}/price
- 5.2.7 PSR Curtailment
/power-system-resource/{id}/curtailment
- 5.2.1 PSR Emissions
- 5.1 PowerSystemResource,Metadata
- APPENDIX
- Other Drafts π
1. Foreword
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. No party shall not be held responsible for identifying any or all such patent rights.
Any trade name used in this document is information given for the convenience of users and does not constitute an endorsement.
This draft deliverable was prepared by the LF Energy Standards and Specifications (LFESS) Carbon Data Standards Consortium (CDSC) - Power System Data Working Group.
THESE MATERIALS ARE PROVIDED βAS IS.β The Contributors and Licensees expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the materials. The entire risk as to implementing or otherwise using the materials is assumed by the implementer and user. IN NO EVENT WILL THE CONTRIBUTORS OR LICENSEES BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS DELIVERABLE OR ITS GOVERNING AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER MEMBER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2. Introduction
This specification was developed as part of the global effort to combat the climate crisis. Specifically, in order to scalably measure carbon emissions of organizations, calculate the impact of deploying and operating clean energy technologies, and catalyze action, companies need an efficient means to discover the details and characteristics of electricity system operators and other similar entities.
This specification offers a set of endpoints that contains the necessary information for carbon data calculations.
3. Normative references
The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.
- IEC 61968/61970: Common Information Model
- ISO 4217: Currency Codes
- ISO 8601: Date and time format
- EECS Rules Fact Sheet 5: TYPES OF ENERGY INPUTS AND TECHNOLOGIES
4. Terminology and Identification
Within this standard, some entities SHALL only take specific values as outlined below.
- For
fuel
, the enum values SHALL be those in column βFull codeβ defined in EECS Rules Fact Sheet 5: TYPES OF ENERGY INPUTS AND TECHNOLOGIES - For
technology
, the enum values SHALL be those in column βFull codeβ defined in EECS Rules Fact Sheet 5: TYPES OF ENERGY INPUTS AND TECHNOLOGIES - For
topology_level
, the user SHALL define their own levels and MAY use some of the examples in the APPENDIX. These levels SHALL be a sequential set of positive integers starting at 0 for the top level, with increasing numbers indicating higher geographical resolution. - For
timestamp
,last_updated
,startDatetime
, andendDatetime
, the format of all timestamps SHALL comply with ISO 8601 and include a timezone.
The keywords βMUSTβ, βMUST NOTβ, βREQUIREDβ, βSHALLβ, βSHALL NOTβ, βSHOULDβ, βSHOULD NOTβ, βRECOMMENDEDβ, βNOT RECOMMENDEDβ, βMAYβ, and βOPTIONALβ in this specification are to be interpreted as described in BCP 14 when, and only when, they appear in all capitals, as shown here.
All data types in this specification are to be interpreted as described in OpenAPI Specification v3.1.0 when, and only when, they appear in all italics.
All field names in the specification are case-sensitive.
5. Endpoint Categories
The following is a list of the endpoints that will be subsequently defined in this section.
# PSR-Specific Metadata
/power-system-resources/list-topology-levels (GET)
/power-system-resources/list-resources (GET)
/power-system-resource/{id}/describe (GET)
/power-system-resource/{id}/capacity (GET)
/power-system-resource/{id}/transmission-capacity (GET)
/power-system-resource/{id}/topology (GET)
# Timeseries Data
/power-system-resource/{id}/timeseries/emissions (GET)
/power-system-resource/{id}/timeseries/generation (GET)
/power-system-resource/{id}/timeseries/demand (GET)
/power-system-resource/{id}/timeseries/imports (GET)
/power-system-resource/{id}/timeseries/exports (GET)
/power-system-resource/{id}/timeseries/price (GET)
/power-system-resource/{id}/timeseries/curtailment (GET)
5.1 PowerSystemResource,Metadata
The primary set of endpoints that contains reference information for PowerSystemResource (PSR) objects. These objects SHALL contain several metadata fields about these PSRs.
5.1.1 Topology Level (List) power-system-resources/list-topology-levels
Description
The topology levels endpoint SHALL return a list of named PowerSystemResources topology levels and their relation to each other.
Request Object
N/A
Response Object
id
- string - (REQUIRED) - The name of the topology levels present in the grid region. It SHALL be human-readable.topology_level
- int - (REQUIRED) - A number representing the hierarchy of this resource topology in relation to the other resource types. These levels SHALL be a sequential set of positive integers starting at 0 for the top level.
5.1.2 PSR (List) /power-system-resources/list-resources
Description
The summary endpoint SHALL return a list of all PowerSystemResources (PSR) objects.
Request Object
topology_level
: int - (OPTIONAL) - An optional filter to only return PSR objects with the given topology level.
Response Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.topology_level
- string - (REQUIRED) - The id of the topology level for this PSR.name
- string - (OPTIONAL) - A descriptive name that provides additional context about the PSR.
This summary endpoint should only include the id
, name
, and
topology_level
fields. It MUST NOT contain additional fields.
5.1.3 PSR Topology (List) /power-system-resource/{id}/topology
Description
The topology endpoint SHALL provide a means for understanding how a particular PSR relates to other PSRs by providing all parents and children of that PSR.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.numLevelsUp
- int - (OPTIONAL) - Number of levels above the requested PSR to return in the response. A value of 1 means that it will only return that PSR's direct parent. Default is zero.numLevelsDown
- int - (OPTIONAL) - Number of levels below the requested PSR to return in the response. A value of 1 means that it will only return that PSR's direct children. Default is zero.
Response Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.topology
- Objectparent
- Object - (OPTIONAL)id
- string The id of the PowerSystemResource that is one level higher in the topology.parent
- Object - (OPTIONAL)- ...
connectedSiblings
- array - (OPTIONAL)id
- string - The id of the PowerSystemResource that has some transmission-based connection.connectedSiblings
- array - (OPTIONAL)id
- string
children
- array - (OPTIONAL)id
- string -The id of the PowerSystemResource that is one level lower in the topology.connectedSiblings
- array - (OPTIONAL)children
- array - (OPTIONAL)
5.1.4 PSR Describe /power-system-resource/{id}/describe
Description
The described endpoint SHALL provide descriptive information, such as geography and other metadata, for a given PowerSystemResource.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.
Response Object
id
- string - (REQUIRED) - TThe id of the requested PowerSystemResource.- describe
asset_info
- array - (OPTIONAL) - A list of additional information associated with that PSR.location
- (OPTIONAL)main_address
- StreetAddress - (OPTIONAL)postal_code
town_detail
- TownDetailname
state_or_province
street_detail
- StreetDetailbuilding_name
display_address
- ...
description
- string - (OPTIONAL)geojson
- geojson - (OPTIONAL)
5.1.5 PSR Capacity /power-system-resource/{id}/capacity
Description
The capacity endpoint SHALL provide capacity information by fuel type and technology for a given PowerSystemResource.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.timestamp
- ISO8601 Datetime - (OPTIONAL) A timestamp for which the capacity is to be returned.
Response Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.unit
- string - (REQUIRED) - SHALL be one of: [MW, kW, W]capacity
- arraytechnology
- string - (OPTIONAL) - id of the technology for generating this fuel.fuel
- string - (REQUIRED) - id of the fuel type used for generation.value
- float - A value of the capacity of generation at this PSR using the given technology and fuel.last_updated
- ISO8601 Datetime- (REQUIRED) - The date and time whenvalue
was most recently updated.
5.1.6 PSR Transmission Capacity /power-system-resource/{id}/transmission-capacity
Description
The transmission capacity endpoint SHALL provide transmission line capacity information for understanding how a particular PSR relates to others PSRs.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.timestamp
- ISO8601 Datetime - (OPTIONAL) A date and time for which the transmission capacity is to be returned.
Response Object
id
- string - (REQUIRED) - The id of the PowerSystemResource associated with this location.unit
- string - (REQUIRED) - SHALL be one of: [MW, kW, W]transmissionCapacity
- arrayconnectedPSR
- Objectid
- string The id of the requested PowerSystemResource connected to the requested one.
value
- float - A value of the total amount of transmission capacity between the two PSRs.last_updated
- timestamp - (REQUIRED) - The date and time whenvalue
was most recently updated.
5.2 PowerSystemResource Timeseries Data
The primary set of endpoints references PowerSystemResource (PSR) time-dependent objects. These objects contain time-series information such as generation or demand along with several metadata fields.
5.2.1 PSR Emissions /power-system-resource/{id}/emissions
Description
The emissions endpoint object SHALL return a time-series of values representing the GHG emissions emitted at a PSR, as well as a breakdown of emissions by fuel type and technology.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.startDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response SHALL return data where the earliest entry'sstartDatetime
occurs AT or AFTER thestartDatetime
specified in the request.endDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response SHALL return data where the latest earliest entry'sendDatetime
occurs AT or BEFORE theendDatetime
specified in the request.
Response Object
id
- string - (REQUIRED) - The id of the PowerSystemResource associated with these emissions.unit
- string - (REQUIRED) - SHALL be: [Tonnes CO2e]emissions
- arraystartDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp MUST be timezone aware.endDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp MUST be timezone aware.value
- float - (REQUIRED) - A value of the amount of emissions that occurred at this PSR during the period indicated. A positive number indicates emissions caused.valueByFuelSource
- array - (REQUIRED) - Lists of fuel types, technologies, and the amount of emissions that come from that fuel type. The unit for these values MUST be the same as that of theunit
field.technology
- string - (OPTIONAL) - id of the technology that released the emissions from this fuel.fuel
- string - (REQUIRED) - id of the fuel type used for generation.value
- float - (REQUIRED) - The amount of emissions that took place at this PSR using the given technology and fuel.
5.2.2 PSR Generation /power-system-resource/{id}/generation
Description
The generation endpoint SHALL return a timeseries of values representing electricity that was generated at a PSR, as well as a breakdown of that electricity generation by fuel type and technology.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.startDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating the period that the response SHALL return data for where the earliest entry'sstartDatetime
occurs AT or AFTER thestartDatetime
specified in the request.endDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating the period that the response SHALL return data for where the latest entry'sendDatetime
occurs AT or BEFORE theendDatetime
specified in the request.
Response Object
id
- string - (REQUIRED) - The id of the PowerSystemResource associated with this generation.unit
- string - (REQUIRED) - SHALL be one of: [MWh, kWh, Wh]generation
- arraystartDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp SHALL be timezone aware.endDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp SHALL be timezone aware.value
- float - (REQUIRED) - The amount of electricity generation that took place at this PSR.valueByFuelSource
- array - (REQUIRED) - Lists of fuel types, technologies, and the amount of generation provided by those fuel types. The unit for these values MUST be the same as that of theunit
field.technology
- string - (OPTIONAL) - id of the technology that generated electricity from the fuel.fuel
- string - (REQUIRED) - id of the fuel type that generated the electricity.value
- float - (REQUIRED) A value of the amount of generation that occurred at this PSR using the giventechnology
andfuel
that occurred between thestartDatetime
andendDatetime
. A positive number indicates generation, while a negative number indicates consumption.
5.2.3 PSR Demand /power-system-resource/{id}/demand
Description
The demand endpoint SHALL return a time-series of values representing electricity demand at a particular PSR.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.startDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the earliest entry'sstartDatetime
occurs AT or AFTER thestartDatetime
specified in the request.endDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the latest entry'sendDatetime
occurs AT or BEFORE theendDatetime
specified in the request.
Response Object
id
- string - (REQUIRED) - The id of the PowerSystemResource associated with this demand.unit
- string - (REQUIRED) - SHALL be one of: [MWh, kWh, Wh]demand
- arraystartDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp MUST be timezone aware.endDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp MUST be timezone aware.value
- float - (REQUIRED) - The demand at this PSR. A positive number indicates consumption. A negative number indicates generation, for example, from behind the meter generating resources not controlled by the grid operator.
5.2.4 PSR Imports /power-system-resource/{id}/imports
Description
The import endpoint SHALL return a timeseries of values representing electricity that was imported to a particular PSR.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.startDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the earliest entry'sstartDatetime
occurs AT or AFTER thestartDatetime
specified in the request.endDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the latest entry'sendDatetime
occurs AT or BEFORE theendDatetime
specified in the request.
Response Object
id
- string - (REQUIRED) - The id of the PowerSystemResource associated with this import.unit
- string - (REQUIRED) - SHALL be one of: [MWh, kWh, Wh]imports
- arraystartDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp SHALL be timezone aware.endDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp SHALL be timezone aware.value
- float - (REQUIRED) - A value of the amount of electricity imported by this PSR. The value MUST be 0 or a positive value.valueByConnectedPSR
- array - (REQUIRED) - Key-value pairs of the connected PSR that this PSR is importing energy from and the amount of electricity that comes from that PSR. The unit for these values MUST be the same as that of theunit
field.connectedPSR
- stringvalue
- positive float - A value of the amount of electricity imported from theconnectedPSR
. The value MUST be 0 or a positive value (exports should be provided in the other endpoint).
5.2.5 PSR Exports /power-system-resource/{id}/exports
Description
An export object SHALL return a timeseries of values representing electricity that was exported to a PSR.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.startDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the earliest entry'sstartDatetime
occurs AT or AFTER thestartDatetime
specified in the request.endDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the latest entry'sendDatetime
occurs AT or BEFORE theendDatetime
specified in the request.
Response Object
id
- string - (REQUIRED) - The id of the PowerSystemResource associated with this export.unit
- string - (REQUIRED) - For electricity, should be one of: [MWh, kWh, Wh]exports
- arraystartDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp MUST be timezone aware.endDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp MUST be timezone aware.value
- positive float - (REQUIRED) - A value of the amount of electricity exported by this PSR. The value MUST be 0 or a positive value (imports should be provided in the other endpoint).valueByConnectedPSR
- array - (REQUIRED) - Key-value pairs of the connected PSR that this PSR is exporting electricity to and the amount of electricity that comes from that PSR. The unit for these values MUST be the same as that of theunit
field.connectedPSR
- (REQUIRED) - stringvalue
- positive float - (REQUIRED) - A value of the amount of electricity exported to theconnectedPSR
. The value MUST be 0 or a positive value (exports should be provided in the other endpoint).
5.2.6 PSR Prices /power-system-resource/{id}/price
Description
The price endpoint SHALL return a timeseries of values representing the price of electricity at a particular PSR.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.startDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the earliest entry'sstartDatetime
occurs AT or AFTER thestartDatetime
specified in the request.endDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the latest entry'sendDatetime
occurs AT or BEFORE theendDatetime
specified in the request.price_type
- string - The type of price we are returning.
Response Object
id
- string - (REQUIRED) - The id of the PowerSystemResource associated with this price.price_type
- string - The type of price we are returning.price
- arraystartDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp SHALL be timezone aware.endDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp SHALL be timezone aware.value
- float - (REQUIRED) - A value of the price of electricity took place at this PSR.
5.2.7 PSR Curtailment /power-system-resource/{id}/curtailment
Description
The curtailment endpoint SHALL return a timeseries of values representing renewable energy that was curtailed at a particular PSR, as well as a breakdown of that curtailed electricity by fuel type.
Request Object
id
- string - (REQUIRED) - The id of the requested PowerSystemResource.startDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the earliest entry'sstartDatetime
occurs AT or AFTER thestartDatetime
specified in the request.endDatetime
- ISO8601 timestamp - (REQUIRED) A timestamp indicating that the response should return data where the latest entry'sendDatetime
occurs AT or BEFORE theendDatetime
specified in the request.
Response Object
id
- string - (REQUIRED) - The id of the PowerSystemResource associated with this curtailment renewable generation.unit
- string - (REQUIRED) - SHALL be one of: [MWh, kWh, Wh]generation
- arraystartDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp MUST be timezone aware.endDatetime
- ISO8601 timestamp - (REQUIRED) - The timestamp MUST be timezone aware.value
- float - (REQUIRED) - A value of the amount of curtailment that took place at this PSR. A positive number indicates curtailment.valueByFuelSource
- array - (REQUIRED) - Lists of fuel types, technologies, and the amount of curtailment that occurred for that fuel type. The unit for these values SHALL be the same as that of the unit field.technology
- string - (OPTIONAL) - id of the technology that was curtailed.fuel
- string - (REQUIRED) - id of the fuel source that was curtailed.value
- float - (REQUIRED) - A value of the amount of curtailment that took place at this PSR using the giventechnology
andfuel
.
APPENDIX
List of acronyms
AIB Association of Issuing Bodies
CIM Common Information Model
LFC Load frequency control
PSR Power system resource
US United States of America
Examples of Topology Levels
The following table shows an example list of topology levels for US and European Grids:
Level | US Grid | European Grid | CIM |
---|---|---|---|
0 | Interconnection | Synchronous area | GeographicalRegion |
1 | Balancing Authority Area | LFC block/LFC area | GeographicalRegion, SubGeographicalRegion |
2 | Zone | Bidding zone | SubGeographicalRegion |
3 | Transmission Node/Substation | Control area | Substation |
4 | Generating Plant | Scheduling Area/Sub scheduling area | Feeder, GeneratingUnit |
5 | Meter (Generator or Load) | Metering Grid Area, MeteringPoint | GeneratingUnit |
This table can be used as a starting point for naming different levels in a given system.
Other Drafts π
- No drafts exist yet.