openapi: 3.2.0 info: contact: email: contact@dsb.gov.au name: Data Standards Body url: https://dsb.gov.au/ description: Specifications for resource endpoints applicable to data holders in the Energy sector. title: CDR Energy Distributed Energy Resources API version: 1.36.0 servers: - description: MTLS url: https://mtls.dh.example.com/cds-au/v1 tags: - description: Distributed Energy Resource endpoints name: Distributed Energy Resources x-shortName: Distributed Energy Resources paths: /energy/electricity/servicepoints/der: get: description: Obtain DER data for all service points associated with the customer. operationId: listElectricityDERBulk parameters: - description: Page of results to request (standard pagination). explode: true in: query name: page required: false schema: type: integer style: form x-cds-type: PositiveInteger - description: Page size to request. Default is 25 (standard pagination). explode: true in: query name: page-size required: false schema: type: integer style: form x-cds-type: PositiveInteger - description: Version of the API endpoint requested by the client. Must be set to a positive integer. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If the value of [_x-min-v_](#request-headers) is equal to or higher than the value of [_x-v_](#request-headers) then the [_x-min-v_](#request-headers) header should be treated as absent. If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`. See [HTTP Headers](#request-headers). explode: false in: header name: x-v required: true schema: type: string style: simple - description: Minimum version of the API endpoint requested by the client. Must be set to a positive integer if provided. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`. explode: false in: header name: x-min-v required: false schema: type: string style: simple - description: An **[[RFC4122]](#nref-RFC4122)** UUID used as a correlation id. If provided, the data holder **MUST** play back this value in the _x-fapi-interaction-id_ response header. If not provided a **[[RFC4122]](#nref-RFC4122)** UUID value is required to be provided in the response header to track the interaction. explode: false in: header name: x-fapi-interaction-id required: false schema: type: string style: simple - description: The time when the customer last logged in to the Data Recipient Software Product as described in **[[FAPI-1.0-Baseline]](#nref-FAPI-1-0-Baseline)**. Required for all resource calls (customer present and unattended). Not required for unauthenticated calls. explode: false in: header name: x-fapi-auth-date required: false schema: type: string style: simple x-conditional: true - description: The customer's original IP address if the customer is currently logged in to the data recipient. The presence of this header indicates that the API is being called in a customer present context. Not to be included for unauthenticated calls. explode: false in: header name: x-fapi-customer-ip-address required: false schema: type: string style: simple - description: The customer's original standard http headers [Base64](#common-field-types) encoded, including the original User-Agent header, if the customer is currently logged in to the data recipient. Mandatory for customer present calls. Not required for unattended or unauthenticated calls. explode: false in: header name: x-cds-client-headers required: false schema: type: string style: simple x-cds-type: Base64 x-conditional: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/EnergyDerListResponse' description: Successful response headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' x-v: $ref: '#/components/headers/XV' '400': content: application/json: schema: $ref: '#/components/schemas/PrimaryResponseErrorListV1' description: The following error codes **MUST** be supported:
headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' '406': content: application/json: schema: $ref: '#/components/schemas/PrimaryResponseErrorListV1' description: The following error codes **MUST** be supported:
headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' '422': content: application/json: schema: $ref: '#/components/schemas/PrimaryResponseErrorListV1' description: The following error codes **MUST** be supported:
headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' summary: Get Bulk DER tags: - Distributed Energy Resources x-scopes: - energy:electricity.der:read x-version: '1' post: description: Obtain DER data for a specific set of service points. operationId: listElectricityDERForSpecificServicePoints parameters: - description: Page of results to request (standard pagination). explode: true in: query name: page required: false schema: type: integer style: form x-cds-type: PositiveInteger - description: Page size to request. Default is 25 (standard pagination). explode: true in: query name: page-size required: false schema: type: integer style: form x-cds-type: PositiveInteger - description: Version of the API endpoint requested by the client. Must be set to a positive integer. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If the value of [_x-min-v_](#request-headers) is equal to or higher than the value of [_x-v_](#request-headers) then the [_x-min-v_](#request-headers) header should be treated as absent. If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`. See [HTTP Headers](#request-headers). explode: false in: header name: x-v required: true schema: type: string style: simple - description: Minimum version of the API endpoint requested by the client. Must be set to a positive integer if provided. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`. explode: false in: header name: x-min-v required: false schema: type: string style: simple - description: An **[[RFC4122]](#nref-RFC4122)** UUID used as a correlation id. If provided, the data holder **MUST** play back this value in the _x-fapi-interaction-id_ response header. If not provided a **[[RFC4122]](#nref-RFC4122)** UUID value is required to be provided in the response header to track the interaction. explode: false in: header name: x-fapi-interaction-id required: false schema: type: string style: simple - description: The time when the customer last logged in to the Data Recipient Software Product as described in **[[FAPI-1.0-Baseline]](#nref-FAPI-1-0-Baseline)**. Required for all resource calls (customer present and unattended). Not required for unauthenticated calls. explode: false in: header name: x-fapi-auth-date required: false schema: type: string style: simple x-conditional: true - description: The customer's original IP address if the customer is currently logged in to the data recipient. The presence of this header indicates that the API is being called in a customer present context. Not to be included for unauthenticated calls. explode: false in: header name: x-fapi-customer-ip-address required: false schema: type: string style: simple - description: The customer's original standard http headers [Base64](#common-field-types) encoded, including the original User-Agent header, if the customer is currently logged in to the data recipient. Mandatory for customer present calls. Not required for unattended or unauthenticated calls. explode: false in: header name: x-cds-client-headers required: false schema: type: string style: simple x-cds-type: Base64 x-conditional: true requestBody: $ref: '#/components/requestBodies/RequestServicePointIds' responses: '200': content: application/json: schema: $ref: '#/components/schemas/EnergyDerListResponse' description: Successful response headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' x-v: $ref: '#/components/headers/XV' '400': content: application/json: schema: $ref: '#/components/schemas/PrimaryResponseErrorListV1' description: The following error codes **MUST** be supported:
headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' '406': content: application/json: schema: $ref: '#/components/schemas/PrimaryResponseErrorListV1' description: The following error codes **MUST** be supported:
headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' '422': content: application/json: schema: $ref: '#/components/schemas/PrimaryResponseErrorListV1' description: The following error codes **MUST** be supported:
headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' summary: Get DER For Specific Service Points tags: - Distributed Energy Resources x-scopes: - energy:electricity.der:read x-version: '1' /energy/electricity/servicepoints/{servicePointId}/der: get: description: Obtain a list of DER data from a particular service point. operationId: getElectricityDERForServicePoint parameters: - description: The _servicePointId_ to obtain data for. _servicePointId_ values are returned by service point list endpoints. Note that it is not a _nationalMeteringId_. explode: false in: path name: servicePointId required: true schema: $ref: '#/components/schemas/EnergyServicePointId' style: simple - description: Version of the API endpoint requested by the client. Must be set to a positive integer. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If the value of [_x-min-v_](#request-headers) is equal to or higher than the value of [_x-v_](#request-headers) then the [_x-min-v_](#request-headers) header should be treated as absent. If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`. See [HTTP Headers](#request-headers). explode: false in: header name: x-v required: true schema: type: string style: simple - description: Minimum version of the API endpoint requested by the client. Must be set to a positive integer if provided. The endpoint should respond with the highest supported version between [_x-min-v_](#request-headers) and [_x-v_](#request-headers). If all versions requested are not supported then the endpoint **MUST** respond with a `406 Not Acceptable`. explode: false in: header name: x-min-v required: false schema: type: string style: simple - description: An **[[RFC4122]](#nref-RFC4122)** UUID used as a correlation id. If provided, the data holder **MUST** play back this value in the _x-fapi-interaction-id_ response header. If not provided a **[[RFC4122]](#nref-RFC4122)** UUID value is required to be provided in the response header to track the interaction. explode: false in: header name: x-fapi-interaction-id required: false schema: type: string style: simple - description: The time when the customer last logged in to the Data Recipient Software Product as described in **[[FAPI-1.0-Baseline]](#nref-FAPI-1-0-Baseline)**. Required for all resource calls (customer present and unattended). Not required for unauthenticated calls. explode: false in: header name: x-fapi-auth-date required: false schema: type: string style: simple x-conditional: true - description: The customer's original IP address if the customer is currently logged in to the data recipient. The presence of this header indicates that the API is being called in a customer present context. Not to be included for unauthenticated calls. explode: false in: header name: x-fapi-customer-ip-address required: false schema: type: string style: simple - description: The customer's original standard http headers [Base64](#common-field-types) encoded, including the original User-Agent header, if the customer is currently logged in to the data recipient. Mandatory for customer present calls. Not required for unattended or unauthenticated calls. explode: false in: header name: x-cds-client-headers required: false schema: type: string style: simple x-cds-type: Base64 x-conditional: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/EnergyDerDetailResponse' description: Successful response headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' x-v: $ref: '#/components/headers/XV' '400': content: application/json: schema: $ref: '#/components/schemas/PrimaryResponseErrorListV1' description: The following error codes **MUST** be supported:
headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' '404': content: application/json: schema: $ref: '#/components/schemas/PrimaryResponseErrorListV1' description: The following error codes **MUST** be supported:
headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' '406': content: application/json: schema: $ref: '#/components/schemas/PrimaryResponseErrorListV1' description: The following error codes **MUST** be supported:
headers: x-fapi-interaction-id: $ref: '#/components/headers/XFAPIInteractionId' summary: Get DER For Service Point tags: - Distributed Energy Resources x-scopes: - energy:electricity.der:read x-version: '1' components: schemas: EnergyDerRecord_acConnections: properties: commissioningDate: description: The date that the DER installation is commissioned. type: string x-cds-type: DateString connectionIdentifier: description: AC Connection ID as defined in the DER register. Does not align with CDR ID permanence standards. type: number count: description: Number of AC Connections in the group. For the suite of AC Connections to be considered as a group, all of the AC Connections included must have the same attributes. type: integer x-cds-type: PositiveInteger derDevices: items: $ref: '#/components/schemas/EnergyDerRecord_derDevices' type: array equipmentType: default: OTHER description: Indicates whether the DER device is connected via an inverter (and what category of inverter it is) or not (e.g., rotating machine). If absent, assume equipment type to be `OTHER`. enum: - INVERTER - OTHER type: string inverterDeviceCapacity: description: The rated AC output power that is listed in the product specified by the manufacturer. Mandatory if _equipmentType_ is `INVERTER`. Default is `0` if value not known. type: number inverterModelNumber: description: The inverter model number. Mandatory if _equipmentType_ is `INVERTER`. type: string inverterSeries: description: The inverter series. Mandatory if _equipmentType_ is `INVERTER`. type: string manufacturerName: description: The name of the inverter manufacturer. Mandatory if _equipmentType_ is `INVERTER`. type: string status: description: Code used to indicate the status of the Inverter. This will be used to identify if an inverter is active or inactive or decommissioned. enum: - ACTIVE - INACTIVE - DECOMMISSIONED type: string required: - commissioningDate - connectionIdentifier - count - derDevices - status type: object x-conditional: - manufacturerName - inverterSeries - inverterModelNumber - inverterDeviceCapacity PrimaryErrorV1_allOf: properties: isSecondaryDataHolderError: default: false description: Indicates the error was propagated from a designated secondary data holder. type: boolean type: object EnergyDerRecord: properties: acConnections: items: $ref: '#/components/schemas/EnergyDerRecord_acConnections' type: array approvedCapacity: description: Approved small generating unit capacity as agreed with NSP in the connection agreement, expressed in kVA. Value of `0` indicates no DER record exists for the given _servicePointId_. type: number availablePhasesCount: description: The number of phases available for the installation of DER. Acceptable values are `0`, `1`, `2` or `3`. Value of `0` indicates no DER record exists for the given _servicePointId_. maximum: 3 minimum: 0 type: integer x-cds-type: NaturalNumber hasCentralProtectionControl: default: false description: For DER installations where NSPs specify the need for additional forms of protection above those inbuilt in an inverter. If absent then assumed to be `false`. type: boolean installedPhasesCount: description: The number of phases that DER is connected to. Acceptable values are `0`, `1`, `2` or `3`. Value of `0` indicates no DER record exists for the given _servicePointId_. maximum: 3 minimum: 0 type: integer x-cds-type: NaturalNumber islandableInstallation: description: For identification of small generating units designed with the ability to operate in an islanded mode. type: boolean protectionMode: $ref: '#/components/schemas/EnergyDerRecord_protectionMode' servicePointId: allOf: - $ref: '#/components/schemas/EnergyServicePointId' description: Unique identifier for the service point. required: - acConnections - approvedCapacity - availablePhasesCount - installedPhasesCount - islandableInstallation - servicePointId type: object x-conditional: - protectionMode RequestServicePointIdListV1_data: properties: servicePointIds: description: Array of _servicePointId_ values to obtain data for. items: $ref: '#/components/schemas/EnergyServicePointId' type: array required: - servicePointIds type: object PrimaryErrorV1: allOf: - $ref: '#/components/schemas/PrimaryErrorV1_allOf' - $ref: '#/components/schemas/ErrorV2' type: object EnergyDerListResponse: properties: data: $ref: '#/components/schemas/EnergyDerListResponse_data' links: $ref: '#/components/schemas/LinksPaginated' meta: $ref: '#/components/schemas/MetaPaginated' required: - data - links - meta type: object RequestServicePointIdListV1: properties: data: $ref: '#/components/schemas/RequestServicePointIdListV1_data' meta: $ref: '#/components/schemas/Meta' required: - data type: object LinksPaginated: properties: first: description: URI to the first page of this set. Mandatory if this response is not the first page. type: string x-cds-type: URIString last: description: URI to the last page of this set. Mandatory if this response is not the last page. type: string x-cds-type: URIString next: description: URI to the next page of this set. Mandatory if this response is not the last page. type: string x-cds-type: URIString prev: description: URI to the previous page of this set. Mandatory if this response is not the first page. type: string x-cds-type: URIString self: description: Fully qualified link that generated the current response document. type: string x-cds-type: URIString required: - self type: object x-conditional: - first - prev - next - last ErrorV2_meta: description: Additional data for customised error codes. properties: urn: description: The CDR error code URN which the application-specific error code extends. Mandatory if the error _code_ is an application-specific error rather than a standardised error code. type: string type: object x-conditional: - urn EnergyDerRecord_protectionMode: description: Required only when the _hasCentralProtectionControl_ flag is set to `true`. One or more of the object fields will be provided to describe the protection modes in place. properties: exportLimitKva: description: Maximum amount of power (kVA) that may be exported from a connection point to the grid, as monitored by a control/relay function. An absent value indicates no limit. type: number frequencyRateOfChange: description: Rate of change of frequency trip point (Hz/s). type: number interTripScheme: description: Description of the form of inter-trip (e.g., 'from local substation'). type: string neutralVoltageDisplacement: description: Trip voltage. type: number overFrequencyProtection: description: Protective function limit in Hz. type: number overFrequencyProtectionDelay: description: Trip delay time in seconds. type: number overVoltageProtection: description: Protective function limit in V. type: number overVoltageProtectionDelay: description: Trip delay time in seconds. type: number sustainedOverVoltage: description: Sustained over voltage. type: number sustainedOverVoltageDelay: description: Sustained Over voltage protection delay in seconds. type: number underFrequencyProtection: description: Protective function limit in Hz. type: number underFrequencyProtectionDelay: description: Trip delay time in seconds. type: number underVoltageProtection: description: Protective function limit in V. type: number underVoltageProtectionDelay: description: Trip delay time in seconds. type: number voltageVectorShift: description: Trip angle in degrees. type: number type: object Meta: type: object ErrorV2: properties: code: description: The code of the error encountered. Where the error is specific to the respondent, an application-specific error code, expressed as a string value. If the error is application-specific, the URN code that the specific error extends must be provided in the _meta_ object. Otherwise, the value is the error code URN. type: string detail: description: A human-readable explanation specific to this occurrence of the problem. type: string meta: $ref: '#/components/schemas/ErrorV2_meta' title: description: A short, human-readable summary of the problem that **MUST NOT** change from occurrence to occurrence of the problem represented by the error code. type: string required: - code - detail - title type: object x-conditional: - meta EnergyDerDetailResponse: properties: data: $ref: '#/components/schemas/EnergyDerRecord' links: $ref: '#/components/schemas/Links' meta: $ref: '#/components/schemas/Meta' required: - data - links type: object MetaPaginated: properties: totalPages: description: The total number of pages in the full set. See [pagination](#pagination). type: integer x-cds-type: NaturalNumber totalRecords: description: The total number of records in the full set. See [pagination](#pagination). type: integer x-cds-type: NaturalNumber required: - totalPages - totalRecords type: object EnergyDerRecord_derDevices: properties: count: description: Number of devices in the group of DER devices. type: integer x-cds-type: PositiveInteger deviceIdentifier: description: Unique identifier for a single DER device or a group of DER devices with the same attributes. Does not align with CDR ID permanence standards. type: number manufacturer: description: The name of the device manufacturer. If absent then assumed to be "unknown". type: string modelNumber: description: The model number of the device. If absent then assumed to be "unknown". type: string nominalRatedCapacity: description: Maximum output in kVA that is listed in the product specification by the manufacturer. This refers to the capacity of each unit within the device group. Default is `0` if value not known. type: number nominalStorageCapacity: description: Maximum storage capacity in kVAh. This refers to the capacity of each storage module within the device group. Mandatory if type is equal to `STORAGE`. Default is `0` if value not known. type: number status: description: Code used to indicate the status of the device. This will be used to identify if an inverter is active or inactive or decommissioned. enum: - ACTIVE - INACTIVE - DECOMMISSIONED type: string subtype: description: Used to indicate the primary technology used in the DER device. This field is also used to record for example the battery chemistry, or the type of PV panel. It is also used to record if a battery is contained in an electric vehicle connected in a vehicle-to-grid arrangement. If absent then assumed to be "other". type: string type: description: Used to indicate the primary technology used in the DER device. enum: - FOSSIL - HYDRO - WIND - SOLAR_PV - RENEWABLE - GEOTHERMAL - STORAGE - OTHER type: string required: - count - deviceIdentifier - nominalRatedCapacity - type type: object x-conditional: - nominalStorageCapacity EnergyServicePointId: description: A unique identifier for an Energy service point, generated according to [CDR ID Permanence](#id-permanence) requirements. type: string x-cds-type: ASCIIString Links: properties: self: description: Fully qualified link that generated the current response document. type: string x-cds-type: URIString required: - self type: object PrimaryResponseErrorListV1: properties: errors: description: List of errors. items: $ref: '#/components/schemas/PrimaryErrorV1' type: array required: - errors type: object EnergyDerListResponse_data: properties: derRecords: description: Array of meter reads. items: $ref: '#/components/schemas/EnergyDerRecord' type: array required: - derRecords type: object requestBodies: RequestServicePointIds: content: application/json: schema: $ref: '#/components/schemas/RequestServicePointIdListV1' description: Request payload containing a list of _servicePointId_ values to obtain data for. required: true headers: XFAPIInteractionId: description: An **[[RFC4122]](#nref-RFC4122)** UUID used as a correlation id. If provided, the data holder **MUST** play back this value in the _x-fapi-interaction-id_ response header. If not provided a **[[RFC4122]](#nref-RFC4122)** UUID value is required to be provided in the response header to track the interaction. explode: false required: true schema: type: string style: simple XV: description: The [payload version](#response-headers) that the endpoint has responded with. explode: false required: true schema: type: string style: simple