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/{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-conditional: true
x-cds-type: Base64
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EnergyDerDetailResponse'
description: Successful response
headers:
x-v:
$ref: '#/components/headers/XV'
x-fapi-interaction-id:
$ref: '#/components/headers/XFAPIInteractionId'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/PrimaryResponseErrorListV1'
description: The following error codes **MUST** be supported:
- [400 - Invalid Field](#error-400-field-invalid)
- [400 - Missing Required Field](#error-400-field-missing)
- [400 - Invalid Version](#error-400-header-invalid-version)
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:
- [404 - Unavailable Service Point](#error-404-unavailable-service-point)
- [404 - Invalid Service Point](#error-404-invalid-service-point)
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:
- [406 - Unsupported Version](#error-406-header-unsupported-version)
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'
/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-conditional: true
x-cds-type: Base64
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EnergyDerListResponse'
description: Successful response
headers:
x-v:
$ref: '#/components/headers/XV'
x-fapi-interaction-id:
$ref: '#/components/headers/XFAPIInteractionId'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/PrimaryResponseErrorListV1'
description: The following error codes **MUST** be supported:
- [400 - Invalid Field](#error-400-field-invalid)
- [400 - Missing Required Field](#error-400-field-missing)
- [400 - Invalid Page Size](#error-400-field-invalid-page-size)
- [400 - Invalid Version](#error-400-header-invalid-version)
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:
- [406 - Unsupported Version](#error-406-header-unsupported-version)
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:
- [422 - Invalid Page](#error-422-field-invalid-page)
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-conditional: true
x-cds-type: Base64
requestBody:
$ref: '#/components/requestBodies/RequestServicePointIds'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EnergyDerListResponse'
description: Successful response
headers:
x-v:
$ref: '#/components/headers/XV'
x-fapi-interaction-id:
$ref: '#/components/headers/XFAPIInteractionId'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/PrimaryResponseErrorListV1'
description: The following error codes **MUST** be supported:
- [400 - Invalid Field](#error-400-field-invalid)
- [400 - Missing Required Field](#error-400-field-missing)
- [400 - Invalid Page Size](#error-400-field-invalid-page-size)
- [400 - Invalid Version](#error-400-header-invalid-version)
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:
- [406 - Unsupported Version](#error-406-header-unsupported-version)
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:
- [422 - Invalid Page](#error-422-field-invalid-page)
- [422 - Unavailable Service Point](#error-422-unavailable-service-point)
- [422 - Invalid Service Point](#error-422-invalid-service-point)
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'
components:
schemas:
EnergyDerDetailResponse:
properties:
data:
$ref: '#/components/schemas/EnergyDerRecord'
links:
$ref: '#/components/schemas/Links'
meta:
$ref: '#/components/schemas/Meta'
required:
- data
- links
type: object
EnergyDerListResponse_data:
properties:
derRecords:
description: Array of meter reads.
items:
$ref: '#/components/schemas/EnergyDerRecord'
type: array
required:
- derRecords
type: object
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
LinksPaginated:
properties:
self:
description: Fully qualified link that generated the current response document.
type: string
x-cds-type: URIString
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
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
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
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
required:
- self
type: object
x-conditional:
- first
- prev
- next
- last
Links:
properties:
self:
description: Fully qualified link that generated the current response document.
type: string
x-cds-type: URIString
required:
- self
type: object
EnergyDerRecord_derDevices:
properties:
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
count:
description: Number of devices in the group of DER devices.
type: integer
x-cds-type: PositiveInteger
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
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
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
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
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
required:
- count
- deviceIdentifier
- nominalRatedCapacity
- type
type: object
x-conditional:
- nominalStorageCapacity
RequestServicePointIdListV1_data:
properties:
servicePointIds:
description: Array of _servicePointId_ values to obtain data for.
items:
$ref: '#/components/schemas/EnergyServicePointId'
type: array
required:
- servicePointIds
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
EnergyDerRecord:
properties:
servicePointId:
allOf:
- $ref: '#/components/schemas/EnergyServicePointId'
description: Unique identifier for the service point.
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
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
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
protectionMode:
$ref: '#/components/schemas/EnergyDerRecord_protectionMode'
acConnections:
items:
$ref: '#/components/schemas/EnergyDerRecord_acConnections'
type: array
required:
- acConnections
- approvedCapacity
- availablePhasesCount
- installedPhasesCount
- islandableInstallation
- servicePointId
type: object
x-conditional:
- protectionMode
PrimaryErrorV1:
allOf:
- $ref: '#/components/schemas/PrimaryErrorV1_allOf'
- $ref: '#/components/schemas/ErrorV2'
type: object
PrimaryResponseErrorListV1:
properties:
errors:
description: List of errors.
items:
$ref: '#/components/schemas/PrimaryErrorV1'
type: array
required:
- errors
type: object
PrimaryErrorV1_allOf:
properties:
isSecondaryDataHolderError:
default: false
description: Indicates the error was propagated from a designated secondary data holder.
type: boolean
type: object
RequestServicePointIdListV1:
properties:
data:
$ref: '#/components/schemas/RequestServicePointIdListV1_data'
meta:
$ref: '#/components/schemas/Meta'
required:
- data
type: object
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
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
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
detail:
description: A human-readable explanation specific to this occurrence of the problem.
type: string
meta:
$ref: '#/components/schemas/ErrorV2_meta'
required:
- code
- detail
- title
type: object
x-conditional:
- meta
MetaPaginated:
properties:
totalRecords:
description: The total number of records in the full set. See [pagination](#pagination).
type: integer
x-cds-type: NaturalNumber
totalPages:
description: The total number of pages in the full set. See [pagination](#pagination).
type: integer
x-cds-type: NaturalNumber
required:
- totalPages
- totalRecords
type: object
EnergyDerRecord_acConnections:
properties:
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
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
manufacturerName:
description: The name of the inverter manufacturer. Mandatory if _equipmentType_ is `INVERTER`.
type: string
inverterSeries:
description: The inverter series. Mandatory if _equipmentType_ is `INVERTER`.
type: string
inverterModelNumber:
description: The inverter model number. Mandatory if _equipmentType_ is `INVERTER`.
type: string
commissioningDate:
description: The date that the DER installation is commissioned.
type: string
x-cds-type: DateString
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
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
derDevices:
items:
$ref: '#/components/schemas/EnergyDerRecord_derDevices'
type: array
required:
- commissioningDate
- connectionIdentifier
- count
- derDevices
- status
type: object
x-conditional:
- manufacturerName
- inverterSeries
- inverterModelNumber
- inverterDeviceCapacity
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
underFrequencyProtection:
description: Protective function limit in Hz.
type: number
underFrequencyProtectionDelay:
description: Trip delay time in seconds.
type: number
overFrequencyProtection:
description: Protective function limit in Hz.
type: number
overFrequencyProtectionDelay:
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
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
frequencyRateOfChange:
description: Rate of change of frequency trip point (Hz/s).
type: number
voltageVectorShift:
description: Trip angle in degrees.
type: number
interTripScheme:
description: Description of the form of inter-trip (e.g., 'from local substation').
type: string
neutralVoltageDisplacement:
description: Trip voltage.
type: number
type: object
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
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