openapi: 3.2.0
info:
title: CDR Energy Energy Plans API
version: 1.36.0
description: Specifications for resource endpoints applicable to data holders in the Energy sector.
contact:
name: Data Standards Body
email: contact@dsb.gov.au
url: https://dsb.gov.au/
servers:
- description: MTLS
url: https://mtls.dh.example.com/cds-au/v1
tags:
- name: Energy Plans
x-shortName: Plans
description: Energy Plan endpoints
paths:
/energy/plans:
get:
servers:
- description: TLS
url: https://tls.dh.example.com/cds-au/v1
summary: Get Generic Plans
operationId: listEnergyPlans
description: 'Obtain a list of energy plans that are currently offered to the market.
Note that the results returned by this endpoint are expected to be ordered in descending order according to _lastUpdated_.'
tags:
- Energy Plans
x-version: '1'
parameters:
- name: type
in: query
description: Used to filter results on the _type_ field. Any one of the valid values for this field can be supplied plus `ALL`. If absent defaults to `ALL`.
schema:
type: string
default: ALL
enum:
- STANDING
- MARKET
- REGULATED
- ALL
- name: fuelType
in: query
description: Used to filter results on the _fuelType_ field. Any one of the valid values for this field can be supplied plus `ALL`. If absent defaults to `ALL`.
schema:
type: string
default: ALL
enum:
- ELECTRICITY
- GAS
- DUAL
- ALL
- name: effective
in: query
description: Allows for the filtering of plans based on whether the current time is within the period of time defined as effective by the _effectiveFrom_ and _effectiveTo_ fields. Valid values are `CURRENT`, `FUTURE` and `ALL`. If absent defaults to `CURRENT`.
schema:
type: string
default: CURRENT
enum:
- CURRENT
- FUTURE
- ALL
- name: updated-since
in: query
description: Only include plans that have been updated after the specified date and time. If absent defaults to include all plans.
schema:
type: string
x-cds-type: DateTimeString
- name: brand
in: query
description: Used to filter results on the _brand_ field. If absent defaults to include all plans.
schema:
type: string
- $ref: '#/components/parameters/QueryPage'
- $ref: '#/components/parameters/QueryPageSize'
- $ref: '#/components/parameters/HeaderXV'
- $ref: '#/components/parameters/HeaderXMinV'
responses:
'200':
$ref: '#/components/responses/ListEnergyPlans200'
'400':
$ref: '#/components/responses/ListEnergyPlans400'
'406':
$ref: '#/components/responses/ListEnergyPlans406'
'422':
$ref: '#/components/responses/ListEnergyPlans422'
/energy/plans/{planId}:
get:
servers:
- description: TLS
url: https://tls.dh.example.com/cds-au/v1
summary: Get Generic Plan Detail
operationId: getEnergyPlanDetail
description: 'Obtain detailed information on a single energy plan offered openly to the market.
Other Versions: [v1](includes/obsolete/get-generic-plan-detail-v1.html), [v2](includes/obsolete/get-generic-plan-detail-v2.html).'
tags:
- Energy Plans
x-version: '3'
x-version-notes: The dailySupplyChargeType field was added in endpoint v3 as part of Standards v1.30.0. In Standards v1.32.0, the description of that field was changed to remove the default value, but it did not result in a new endpoint version. Refer to the [v1.32.0 release notes](includes/releasenotes/releasenotes.1.32.0.html) for more details.
parameters:
- name: planId
description: ID of the specific plan requested.
in: path
required: true
schema:
$ref: '#/components/schemas/EnergyPlanId'
- $ref: '#/components/parameters/HeaderXV'
- $ref: '#/components/parameters/HeaderXMinV'
responses:
'200':
$ref: '#/components/responses/GetEnergyPlanDetail200'
'400':
$ref: '#/components/responses/GetEnergyPlanDetail400'
'404':
$ref: '#/components/responses/GetEnergyPlanDetail404'
'406':
$ref: '#/components/responses/GetEnergyPlanDetail406'
components:
schemas:
LinksPaginated:
type: object
required:
- self
x-conditional:
- first
- prev
- next
- last
properties:
self:
type: string
description: Fully qualified link that generated the current response document.
x-cds-type: URIString
first:
type: string
description: URI to the first page of this set. Mandatory if this response is not the first page.
x-cds-type: URIString
prev:
type: string
description: URI to the previous page of this set. Mandatory if this response is not the first page.
x-cds-type: URIString
next:
type: string
description: URI to the next page of this set. Mandatory if this response is not the last page.
x-cds-type: URIString
last:
type: string
description: URI to the last page of this set. Mandatory if this response is not the last page.
x-cds-type: URIString
EnergyPlanId:
type: string
description: The unique identifier for the Energy plan.
x-cds-type: ASCIIString
EnergyPlanDiscounts:
type: object
required:
- displayName
- type
- methodUType
x-conditional:
- percentOfBill
- percentOfUse
- fixedAmount
- percentOverThreshold
properties:
displayName:
type: string
description: The display name of the discount.
description:
type: string
description: The description of the discount.
type:
type: string
description: The type of the discount.
enum:
- CONDITIONAL
- GUARANTEED
- OTHER
category:
type: string
description: The type of the discount. Mandatory if the discount _type_ is `CONDITIONAL`.
enum:
- PAY_ON_TIME
- DIRECT_DEBIT
- GUARANTEED_DISCOUNT
- OTHER
endDate:
type: string
x-cds-type: DateString
description: Optional end date for the discount after which the discount is no longer available.
methodUType:
type: string
description: The method of calculation of the discount.
enum:
- percentOfBill
- percentOfUse
- fixedAmount
- percentOverThreshold
percentOfBill:
type: object
description: Required if _methodUType_ is `percentOfBill`.
required:
- rate
properties:
rate:
type: string
x-cds-type: RateString
description: The rate of the discount applied to the bill amount.
percentOfUse:
type: object
description: Required if _methodUType_ is `percentOfUse`.
required:
- rate
properties:
rate:
type: string
x-cds-type: RateString
description: The rate of the discount applied to the _usageamount_.
fixedAmount:
type: object
description: Required if _methodUType_ is `fixedAmount`.
required:
- amount
properties:
amount:
type: string
x-cds-type: AmountString
description: The amount of the discount.
percentOverThreshold:
type: object
description: Required if _methodUType_ is `percentOverThreshold`.
required:
- rate
- usageAmount
properties:
rate:
type: string
x-cds-type: RateString
description: The rate of the discount over the usage amount.
usageAmount:
type: string
x-cds-type: AmountString
description: The usage amount threshold above which the discount applies.
EnergyPlanIncentives:
type: object
required:
- displayName
- description
- category
properties:
displayName:
type: string
description: The display name of the incentive.
description:
type: string
description: The description of the incentive.
category:
type: string
description: The type of the incentive.
enum:
- GIFT
- ACCOUNT_CREDIT
- OTHER
eligibility:
type: string
description: A display message outlining an eligibility criteria that may apply.
Meta:
type: object
EnergyPlanSolarFeedInTariffV3:
type: object
required:
- displayName
- scheme
- payerType
- tariffUType
x-conditional:
- singleTariff
- timeVaryingTariffs
properties:
displayName:
type: string
description: The name of the tariff.
description:
type: string
description: A description of the tariff.
startDate:
description: The start date of the application of the feed in tariff.
type: string
x-cds-type: DateString
endDate:
description: The end date of the application of the feed in tariff.
type: string
x-cds-type: DateString
scheme:
type: string
description: The applicable scheme.
enum:
- PREMIUM
- CURRENT
- VARIABLE
- OTHER
payerType:
type: string
description: The type of the payer.
enum:
- GOVERNMENT
- RETAILER
tariffUType:
type: string
description: Reference to the applicable tariff structure.
enum:
- singleTariff
- timeVaryingTariffs
singleTariff:
type: object
description: Represents a constant tariff. Mandatory if _tariffUType_ is set to `singleTariff`.
required:
- rates
properties:
rates:
description: Array of feed in rates.
type: array
items:
type: object
required:
- unitPrice
properties:
unitPrice:
type: string
x-cds-type: AmountString
description: Unit price of usage per measure unit (exclusive of GST).
measureUnit:
type: string
description: The measurement unit of rate. Assumed to be `KWH` if absent.
default: KWH
allOf:
- $ref: '#/components/schemas/MeasureUnitEnum'
volume:
type: number
description: Volume that this rate applies to. Only applicable for 'stepped' rates where different rates apply for different volumes of usage in a period.
period:
type: string
x-cds-type: ExternalRef
description: Usage period for which the block rate applies. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax). Defaults to `P1Y` if absent.
default: P1Y
timeVaryingTariffs:
type: array
description: Represents a tariff based on time of day. Mandatory if _tariffUType_ is set to `timeVaryingTariffs`.
items:
type: object
required:
- timeVariations
- displayName
properties:
type:
type: string
description: The type of the charging time period. If absent applies to all periods.
enum:
- PEAK
- OFF_PEAK
- SHOULDER
displayName:
type: string
description: Display name of the tariff.
rates:
description: Array of feed in rates.
type: array
items:
type: object
required:
- unitPrice
properties:
unitPrice:
type: string
x-cds-type: AmountString
description: Unit price of usage per measure unit (exclusive of GST).
measureUnit:
type: string
description: The measurement unit of rate. Assumed to be `KWH` if absent.
default: KWH
allOf:
- $ref: '#/components/schemas/MeasureUnitEnum'
volume:
type: number
description: Volume that this rate applies to. Only applicable for 'stepped' rates where different rates apply for different volumes of usage in a period.
period:
type: string
x-cds-type: ExternalRef
description: Usage period for which the block rate applies. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax). Defaults to `P1Y` if absent.
default: P1Y
timeVariations:
description: Array of time windows for which this tariff is applicable.
type: array
items:
type: object
required:
- days
properties:
days:
description: The days that this time window applies to. At least one entry required.
type: array
items:
$ref: '#/components/schemas/EnergyDaysEnum'
startTime:
description: The beginning of the time window per day for which the tariff applies. If absent assumes start of day (i.e. midnight). Formatted according to [ISO 8601 Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the time is provided without a UTC offset, the time zone will be determined by the value of EnergyPlanContract.timeZone.
type: string
x-cds-type: ExternalRef
endTime:
description: The end of the time window per day for which the tariff applies. If absent assumes end of day (i.e. one second before midnight). Formatted according to [ISO 8601 Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the time is provided without a UTC offset, the time zone will be determined by the value of EnergyPlanContract.timeZone.
type: string
x-cds-type: ExternalRef
EnergyPlanContractFullV3:
allOf:
- $ref: '#/components/schemas/EnergyPlanContractV3'
- type: object
required:
- billFrequency
x-conditional:
- benefitPeriod
- variation
- coolingOffDays
properties:
termType:
type: string
description: The term for the contract. If absent assumes no specified term.
enum:
- 1_YEAR
- 2_YEAR
- 3_YEAR
- 4_YEAR
- 5_YEAR
- ONGOING
- OTHER
benefitPeriod:
type: string
description: Description of the benefit period. Should only be present if _termType_ has the value `ONGOING`.
terms:
type: string
description: Free text description of the terms for the contract.
meterTypes:
description: An array of the meter types that this contract is available for.
type: array
items:
type: string
coolingOffDays:
type: integer
x-cds-type: PositiveInteger
description: Number of days in the cooling off period for the contract. Mandatory for plans with type of `MARKET`.
billFrequency:
description: An array of the available billing schedules for this contract. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax).
type: array
items:
type: string
MeasureUnitEnum:
type: string
enum:
- KWH
- KVA
- KVAR
- KVARH
- KW
- DAYS
- METER
- MONTH
MetaPaginated:
type: object
required:
- totalPages
- totalRecords
properties:
totalRecords:
type: integer
description: The total number of records in the full set. See [pagination](#pagination).
x-cds-type: NaturalNumber
totalPages:
type: integer
description: The total number of pages in the full set. See [pagination](#pagination).
x-cds-type: NaturalNumber
EnergyPlanGreenPowerCharges:
type: object
required:
- displayName
- scheme
- type
- tiers
properties:
displayName:
type: string
description: The display name of the charge.
description:
type: string
description: The description of the charge.
scheme:
type: string
description: The applicable green power scheme.
enum:
- GREENPOWER
- OTHER
type:
type: string
description: The type of charge.
enum:
- FIXED_PER_DAY
- FIXED_PER_WEEK
- FIXED_PER_MONTH
- FIXED_PER_UNIT
- PERCENT_OF_USE
- PERCENT_OF_BILL
tiers:
description: Array of charge tiers based on the percentage of green power used for the period implied by the type. Array is in order of increasing percentage of green power.
type: array
items:
type: object
required:
- percentGreen
x-conditional:
- rate
- amount
properties:
percentGreen:
type: string
x-cds-type: RateString
description: The upper percentage of green power used applicable for this tier.
rate:
type: string
x-cds-type: RateString
description: The rate of the charge if the type implies the application of a rate.
amount:
type: string
x-cds-type: AmountString
description: The amount of the charge if the type implies the application of a fixed amount.
EnergyDaysEnum:
type: string
enum:
- SUN
- MON
- TUE
- WED
- THU
- FRI
- SAT
- PUBLIC_HOLIDAYS
Links:
type: object
required:
- self
properties:
self:
type: string
description: Fully qualified link that generated the current response document.
x-cds-type: URIString
EnergyPlanResponseV3:
type: object
required:
- data
- links
properties:
data:
$ref: '#/components/schemas/EnergyPlanDetailV3'
links:
$ref: '#/components/schemas/Links'
meta:
$ref: '#/components/schemas/Meta'
ResponseErrorListV2:
type: object
required:
- errors
properties:
errors:
description: List of errors.
type: array
items:
$ref: '#/components/schemas/ErrorV2'
EnergyPlanControlledLoadV2:
type: object
required:
- displayName
- rateBlockUType
x-conditional:
- singleRate
- timeOfUseRates
properties:
displayName:
type: string
description: A display name for the controlled load.
rateBlockUType:
type: string
description: Specifies the type of controlled load rate.
enum:
- singleRate
- timeOfUseRates
startDate:
description: Optional start date of the application of the controlled load rate.
type: string
x-cds-type: DateString
endDate:
description: Optional end date of the application of the controlled load rate.
type: string
x-cds-type: DateString
singleRate:
type: object
description: Object representing a single controlled load rate. Required if _rateBlockUType_ is `singleRate`.
required:
- displayName
- rates
properties:
displayName:
type: string
description: Display name of the controlled load rate.
description:
type: string
description: Description of the controlled load rate.
dailySupplyCharge:
type: string
x-cds-type: AmountString
description: The daily supply charge (exclusive of GST) for this controlled load tier.
rates:
description: Array of controlled load rates in order of usage volume.
type: array
items:
type: object
required:
- unitPrice
properties:
unitPrice:
type: string
x-cds-type: AmountString
description: Unit price of usage per measure unit (exclusive of GST).
measureUnit:
type: string
description: The measurement unit of rate. Assumed to be `KWH` if absent.
default: KWH
allOf:
- $ref: '#/components/schemas/MeasureUnitEnum'
volume:
type: number
description: Volume in kWh that this rate applies to. Only applicable for 'stepped' rates where different rates apply for different volumes of usage in a period.
period:
type: string
x-cds-type: ExternalRef
description: Usage period for which the block rate applies. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax). Defaults to `P1Y` if absent.
default: P1Y
timeOfUseRates:
description: Array of objects representing time of use rates. Required if _rateBlockUType_ is `timeOfUseRates`.
type: array
items:
type: object
required:
- displayName
- type
- rates
- timeOfUse
properties:
displayName:
type: string
description: Display name of the controlled load rate.
description:
type: string
description: Description of the controlled load rate.
dailySupplyCharge:
type: string
x-cds-type: AmountString
description: The daily supply charge (exclusive of GST) for this controlled load tier.
rates:
description: Array of controlled load rates in order of usage volume.
type: array
items:
type: object
required:
- unitPrice
properties:
unitPrice:
type: string
x-cds-type: AmountString
description: Unit price of usage per measure unit (exclusive of GST).
measureUnit:
type: string
description: The measurement unit of rate. Assumed to be `KWH` if absent.
default: KWH
allOf:
- $ref: '#/components/schemas/MeasureUnitEnum'
volume:
type: number
description: Volume in kWh that this rate applies to. Only applicable for 'stepped' rates where different rates apply for different volumes of usage in a period.
period:
type: string
x-cds-type: ExternalRef
description: Usage period for which the block rate applies. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax). Defaults to `P1Y` if absent.
default: P1Y
timeOfUse:
description: Array of time windows for which this time of use rate applies.
type: array
items:
type: object
x-conditional:
- startTime
- endTime
- additionalInfo
properties:
days:
description: The days that this time window applies to.
type: array
items:
$ref: '#/components/schemas/EnergyDaysEnum'
startTime:
type: string
x-cds-type: ExternalRef
description: The beginning of the time window per day for which the controlled load rate applies. Required if _endTime_ provided. Formatted according to [ISO 8601 Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the time is provided without a UTC offset, the time zone will be determined by the value of EnergyPlanContract.timeZone.
endTime:
type: string
x-cds-type: ExternalRef
description: The end of the time window per day for which the controlled load rate applies. Required if _startTime_ provided. Formatted according to [ISO 8601 Times](https://en.wikipedia.org/wiki/ISO_8601#Times). If the time is provided without a UTC offset, the time zone will be determined by the value of EnergyPlanContract.timeZone.
additionalInfo:
description: Display text providing more information on the controlled load, for e.g., controlled load availability if specific day/time is not known. Required if _startTime_ and _endTime_ absent or if _additionalInfoUri_ provided.
type: string
additionalInfoUri:
description: Optional link to additional information regarding the controlled load.
type: string
x-cds-type: URIString
type:
type: string
description: The type of usage that the rate applies to.
enum:
- PEAK
- OFF_PEAK
- SHOULDER
- SOLAR_SPONGE
EnergyPlanDetailV3:
allOf:
- $ref: '#/components/schemas/EnergyPlan'
- type: object
x-conditional:
- gasContract
- electricityContract
properties:
meteringCharges:
description: Charges for metering included in the plan.
type: array
items:
type: object
required:
- displayName
- minimumValue
properties:
displayName:
type: string
description: Display name of the charge.
description:
type: string
description: Description of the charge.
minimumValue:
type: string
x-cds-type: AmountString
description: Minimum value of the charge if the charge is a range or the absolute value of the charge if no range is specified.
maximumValue:
type: string
x-cds-type: AmountString
description: The upper limit of the charge if the charge could occur in a range.
period:
type: string
x-cds-type: ExternalRef
description: The charges that occur on a schedule indicates the frequency. Formatted according to [ISO 8601 Durations](https://en.wikipedia.org/wiki/ISO_8601#Durations) (excludes recurrence syntax).
gasContract:
description: The details of the terms for the supply of electricity under this plan. Is mandatory if _fuelType_ is set to `GAS` or `DUAL`.
allOf:
- $ref: '#/components/schemas/EnergyPlanContractFullV3'
electricityContract:
description: The details of the terms for the supply of electricity under this plan. Is mandatory if _fuelType_ is set to `ELECTRICITY` or `DUAL`.
allOf:
- $ref: '#/components/schemas/EnergyPlanContractFullV3'
EnergyPlanEligibility:
type: object
required:
- type
- information
properties:
type:
type: string
description: The type of the eligibility restriction.
The `CONTINGENT_PLAN` value indicates that the plan is contingent on the customer taking up an alternate fuel plan from the same retailer (for instance, if the _fuelType_ is `ELECTRICITY` then a `GAS` plan from the same retailer must be taken up).
enum:
- EXISTING_CUST
- EXISTING_POOL
- EXISTING_SOLAR
- EXISTING_BATTERY
- EXISTING_SMART_METER
- EXISTING_BASIC_METER
- SENIOR_CARD
- SMALL_BUSINESS
- NO_SOLAR_FIT
- NEW_CUSTOMER
- ONLINE_ONLY
- REQ_EQUIP_SUPPLIER
- THIRD_PARTY_ONLY
- SPORT_CLUB_MEMBER
- ORG_MEMBER
- SPECIFIC_LOCATION
- MINIMUM_USAGE
- LOYALTY_MEMBER
- GROUP_BUY_MEMBER
- CONTINGENT_PLAN
- OTHER
information:
type: string
description: Information of the eligibility restriction specific to the type of the restriction.
description:
type: string
description: A description of the eligibility restriction.
EnergyPlan:
type: object
required:
- planId
- lastUpdated
- type
- fuelType
- brand
- brandName
properties:
planId:
$ref: '#/components/schemas/EnergyPlanId'
effectiveFrom:
type: string
x-cds-type: DateTimeString
description: The date and time from which this plan is effective (i.e. is available for origination). Used to enable the articulation of products to the regime before they are available for customers to originate.
effectiveTo:
type: string
x-cds-type: DateTimeString
description: The date and time at which this plan will be retired and will no longer be offered. Used to enable the managed deprecation of plans.
lastUpdated:
type: string
x-cds-type: DateTimeString
description: The last date and time that the information for this plan was changed (or the creation date for the plan if it has never been altered).
displayName:
type: string
description: The display name of the plan.
description:
type: string
description: A description of the plan.
type:
type: string
description: The type of the plan.
enum:
- STANDING
- MARKET
- REGULATED
fuelType:
type: string
description: The fuel types covered by the plan.
enum:
- ELECTRICITY
- GAS
- DUAL
brand:
type: string
x-cds-type: ASCIIString
description: The ID of the brand under which this plan is offered.
brandName:
type: string
description: The display name of the brand under which this plan is offered.
applicationUri:
type: string
x-cds-type: URIString
description: A link to an application web page where this plan can be applied for.
additionalInformation:
type: object
description: Object that contains links to additional information on specific topics.
properties:
overviewUri:
type: string
x-cds-type: URIString
description: A link to a general overview of the plan.
termsUri:
type: string
x-cds-type: URIString
description: A link to terms and conditions for the plan.
eligibilityUri:
type: string
x-cds-type: URIString
description: A link to detail on eligibility criteria for the plan.
pricingUri:
type: string
x-cds-type: URIString
description: A link to detail on pricing for the plan.
bundleUri:
type: string
x-cds-type: URIString
description: A link to detail on bundles that this plan can be a part of.
customerType:
type: string
description: The type of customer that the plan is offered to. If absent then the plan is available to all customers.
enum:
- RESIDENTIAL
- BUSINESS
geography:
type: object
required:
- distributors
description: Describes the geographical area that the plan is available for. If absent then it is assumed the plan is not geographically limited.
properties:
excludedPostcodes:
description: Array of valid Australian postcodes that are specifically excluded from the plan. Each element is a single four digit postcode (e.g., `3000`) or a range of postcodes defined by two four digit postcodes and a hyphen (e.g., `3000-3999`).
type: array
items:
type: string
includedPostcodes:
description: Array of valid Australian postcodes that are included from the plan. If absent defaults to all non-excluded postcodes. Each element is a single four digit postcode (e.g., `3000`) or a range of postcodes defined by two four digit postcodes and a hyphen (e.g., `3000-3999`).
type: array
items:
type: string
distributors:
description: Array of distributors for the plan. Must have at least one entry.
type: array
items:
type: string
EnergyPlanContractV3:
type: object
required:
- pricingModel
- isFixed
- paymentOption
- tariffPeriod
x-conditional:
- timeZone
- variation
- controlledLoad
properties:
additionalFeeInformation:
type: string
description: Free text field containing additional information of the fees for this contract.
pricingModel:
type: string
description: 'The pricing model for the contract. Contracts for gas must use `SINGLE_RATE`. Note that the detail for the enumeration values are: