Amber Electric · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Amber Electric Public API

9 actions 9 updates documentation extends openapi/amber-electric-public-api-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for Amber Electric's API. It is a proposal applied on top of the contract, not a document Amber Electric publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

tagssummaryx-apievangelist-notedescriptioncontactx-apievangelist-artifactsx-access-gatex-anonymous

Targets 9

$.info
$
$.paths['/state/{state}/renewables/current'].get
$.paths['/sites'].get
$.paths['/sites/{siteId}/prices'].get
$.paths['/sites/{siteId}/prices/current'].get
$.paths['/sites/{siteId}/usage'].get
$.components.securitySchemes.apiKey
$.components.responses

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Amber Electric Public API
  version: 1.0.0
extends: openapi/amber-electric-public-api-openapi.json
x-apievangelist:
  generated: '2026-07-27'
  method: generated
  source: >-
    Derived from openapi/amber-electric-public-api-openapi.json plus artifacts in
    this repository (rate-limits/, conventions/, errors/, authentication/). The
    harvested contract is never mutated — every enhancement lives here.
  rationale: >-
    Amber's published contract is valid and honest but thin in three specific
    ways this overlay repairs: no operation carries a summary or a tag, the
    anonymous renewables operation is not signposted as anonymous, and the 429
    the service really returns when rate limiting bites is undeclared. Nothing
    here changes semantics; it adds documentation the running service already
    honours.
actions:
- target: $.info
  update:
    description: >-
      Amber Electric's public REST API. Five read-only operations over
      half-hourly National Electricity Market data: the sites on your account,
      actual/current/forecast prices for a site, usage for a site, and the
      current renewable-energy percentage of the grid for a NEM state.
      Authentication is an unscoped HTTP bearer token generated from the
      Developers tab of the logged-in Amber customer app; one operation —
      GET /state/{state}/renewables/current — is explicitly anonymous. Rate
      limit: 50 calls per 5 minutes, per account.
    contact:
      name: Amber Public API discussions
      url: https://github.com/amberelectric/public-api/discussions
    x-apievangelist-artifacts:
      conventions: conventions/amber-electric-conventions.yml
      errors: errors/amber-electric-problem-types.yml
      rate_limits: rate-limits/amber-electric-rate-limits.yml
      authentication: authentication/amber-electric-authentication.yml
      data_model: data-model/amber-electric-data-model.yml
      skills: skills/_index.yml
    x-access-gate: customer-account-required
- target: $
  update:
    tags:
    - name: Renewables
      description: Grid renewable-energy percentage for a National Electricity Market state. Anonymous.
    - name: Sites
      description: The sites, NMIs and meter channels on your Amber account.
    - name: Prices
      description: Actual, current and forecast half-hourly prices for one of your sites.
    - name: Usage
      description: Interval consumption, generation, cost and data quality for one of your sites.
- target: $.paths['/state/{state}/renewables/current'].get
  update:
    summary: Get current grid renewables for a NEM state
    tags: [Renewables]
    x-anonymous: true
    x-apievangelist-note: >-
      The only operation on this API that answers without a credential — it
      carries an explicit `security: []` override, confirmed returning 200
      anonymously for nsw, vic, qld and sa on 2026-07-27.
- target: $.paths['/sites'].get
  update:
    summary: List the sites on your account
    tags: [Sites]
    x-apievangelist-note: >-
      Call this first — siteId is a ULID assigned by Amber, not the NMI, and
      every other site-scoped operation needs it.
- target: $.paths['/sites/{siteId}/prices'].get
  update:
    summary: Get prices for a site across a date range
    tags: [Prices]
- target: $.paths['/sites/{siteId}/prices/current'].get
  update:
    summary: Get the current price for a site
    tags: [Prices]
- target: $.paths['/sites/{siteId}/usage'].get
  update:
    summary: Get usage for a site across a date range
    tags: [Usage]
    x-apievangelist-note: Returns at most 90 days per call; startDate and endDate are both required.
- target: $.components.securitySchemes.apiKey
  update:
    description: >-
      Unscoped bearer token generated from the Developers tab inside the
      logged-in Amber customer app at https://app.amber.com.au/developers.
      Requires an active Amber electricity account — there is no self-serve
      developer signup, sandbox or trial key.
- target: $.components.responses
  update:
    TooManyRequests:
      description: >-
        Rate limit exceeded. Amber enforces 50 calls per 5 minutes per account
        (announced at
        https://github.com/amberelectric/public-api/discussions/146). Undeclared
        in the published contract; added here because the running service
        returns it.
      headers:
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimit-Limit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimit-Remaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimit-Reset'
        RateLimit-Policy:
          $ref: '#/components/headers/RateLimit-Policy'
    Error:
      description: 'Error envelope returned by this API: {"message": "<string>"}'
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
                example: Unauthorized