EDF Energy · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the EDF Kraken REST API

12 actions 12 updates servers extends openapi/edf-energy-kraken-openapi.yml
Derived by API Evangelist Built from the contracts EDF Energy publishes. EDF Energy did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-agentic-accessx-anonymousx-verifiedx-consumer-datax-oauth-scopex-notex-apievangelist-providerx-apievangelist-platform

Targets 10

$.info
$
$.components.securitySchemes
$.paths['/v1/products/'].get
$.paths['/v1/industry/grid-supply-points/'].get
$.paths['/v1/electricity-meter-points/{mpan}/meters/{serial_number}/consumption/'].get
$.paths['/v1/gas-meter-points/{mprn}/meters/{serial_number}/consumption/'].get
$.paths['/v1/accounts/'].post
$.paths['/v1/payment-intents/create/'].post
$.paths['/v1/payment-intents/confirm/'].post

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the EDF Kraken REST API
  version: 1.0.0
extends: openapi/edf-energy-kraken-openapi.yml
x-apievangelist:
  generated: '2026-07-27'
  method: generated
  source: >-
    Enhancements derived from the artifacts in this repository — conventions/,
    errors/, lifecycle/, authentication/, scopes/, rate-limits/, sandbox/ — applied over
    the verbatim OpenAPI 3.0.3 document EDF serves at
    https://api.edfgb-kraken.energy/v1/schema?namespaces=default. The original spec is
    never mutated; these actions are what we would ask EDF to merge upstream.
  note: >-
    Nothing here invents API behaviour. Every value is either published by EDF elsewhere
    (the guides, the auth server, the error registry) or observed live and recorded with
    its HTTP status.
actions:
- target: $.info
  update:
    x-apievangelist-provider: edf-energy
    x-apievangelist-platform: >-
      Kraken, licensed from Octopus Energy Group and hosted for EDF GB. The API is
      Kraken's, branded for EDF.
    x-apievangelist-anonymous-surface: >-
      /v1/products/ and /v1/industry/grid-supply-points/ answer with no credential;
      everything customer-scoped requires an Authorization token.
    x-error-registry: https://developer.edfgb-kraken.energy/graphql/reference/error-codes/
    x-conventions: conventions/edf-energy-conventions.yml
    x-lifecycle: lifecycle/edf-energy-lifecycle.yml
- target: $
  update:
    servers:
    - url: https://api.edfgb-kraken.energy/v1/
      description: >-
        Production. Declared in the REST API basics guide but absent from the served
        document, which ships no servers[] array at all — the single most impactful gap
        in the spec for any generated client.
- target: $.info
  update:
    x-datetime-format: ISO 8601; include timezone or Europe/London is assumed (GMT/BST drift)
    x-rate-limits:
      model: complexity + hourly points + per-field limits + node cap
      complexity_per_request: 200
      points_per_hour: {account_user: 50000, organisation: 100000, oauth_application: 300000}
      nodes_per_request: 10000
      errors: [KT-CT-1188, KT-CT-1189, KT-CT-1199]
      detail: rate-limits/edf-energy-rate-limits.yml
- target: $.components.securitySchemes
  update:
    KrakenOAuth2:
      type: oauth2
      description: >-
        OAuth 2.0 authorisation server at auth.edfgb-kraken.energy. Documented on the
        auth server and discoverable via OpenID Connect metadata, but not declared in
        the served OpenAPI — so a generated client cannot see the delegated-access path
        at all. 111 scopes; see scopes/edf-energy-scopes.yml.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.edfgb-kraken.energy/authorize/
          tokenUrl: https://auth.edfgb-kraken.energy/token/
          refreshUrl: https://auth.edfgb-kraken.energy/token/
          scopes:
            openid: OpenID Connect authentication
            full-customer-access: Full access to the customer's data
            request:consumption-data: Request the customer's metered consumption data
            view:smartflex-data: View SmartFlex demand-flexibility data
            update:smart-meter-data-preferences: Update the customer's smart-meter data preferences
        clientCredentials:
          tokenUrl: https://auth.edfgb-kraken.energy/token/
          scopes: {}
    KrakenOpenIDConnect:
      type: openIdConnect
      openIdConnectUrl: https://auth.edfgb-kraken.energy/.well-known/openid-configuration
      description: >-
        OIDC discovery served anonymously at HTTP 200; issuer
        https://auth.edfgb-kraken.energy/token/, RS256/HS256 id tokens, JWKS at
        /.well-known/jwks.json.
- target: $.paths['/v1/products/'].get
  update:
    x-anonymous: true
    x-verified:
      date: '2026-07-27'
      status: 200
      result: 21 live EDF products returned with no credential
    x-agentic-access:
      action-class: connected
      consequence: read
- target: $.paths['/v1/industry/grid-supply-points/'].get
  update:
    x-anonymous: true
    x-verified:
      date: '2026-07-27'
      status: 200
      result: postcode SW1A1AA resolved to GSP group _C with no credential
    x-agentic-access:
      action-class: connected
      consequence: read
- target: $.paths['/v1/electricity-meter-points/{mpan}/meters/{serial_number}/consumption/'].get
  update:
    x-consumer-data: true
    x-oauth-scope: request:consumption-data
    x-note: >-
      Consumer consumption data. Available to a third party only with a token held by
      the account user or an OAuth application authorised by them. No Great Britain
      mandate requires this endpoint to exist — it is a supplier choice.
    x-agentic-access:
      action-class: connected
      consequence: read
      audit: required
- target: $.paths['/v1/gas-meter-points/{mprn}/meters/{serial_number}/consumption/'].get
  update:
    x-consumer-data: true
    x-oauth-scope: request:consumption-data
    x-agentic-access:
      action-class: connected
      consequence: read
      audit: required
- target: $.paths['/v1/accounts/'].post
  update:
    x-agentic-access:
      action-class: acting
      consequence: write
      audit: required
      human-in-the-loop: recommended
    x-note: Creates a real supply agreement for a real person; not an agent-autonomous action.
- target: $.paths['/v1/payment-intents/create/'].post
  update:
    x-agentic-access:
      action-class: acting
      consequence: physical
      audit: required
      human-in-the-loop: required
    x-idempotency: >-
      None. No Idempotency-Key header or parameter is accepted on any REST operation,
      including this one — a retried payment-intent creation has no replay protection on
      this surface. Idempotency exists only on the GraphQL money mutations via the
      idempotencyKey input field.
- target: $.paths['/v1/payment-intents/confirm/'].post
  update:
    x-agentic-access:
      action-class: acting
      consequence: physical
      audit: required
      human-in-the-loop: required
- target: $.info
  update:
    x-spec-gaps:
    - No servers[] array — the base URL exists only in prose in the REST guide.
    - No OAuth 2.0 security scheme declared, despite a full OAuth/OIDC server being live.
    - >-
      Only 6 of 27 operations declare any 4xx/5xx response; the read endpoints declare a
      200 and nothing else, so failure has no machine-readable contract on most paths.
    - No response examples anywhere in the document.
    - No application/problem+json; errors are bespoke ErrorResponse/ValidationOrDomainError shapes.
    - >-
      operationIds are human-readable strings with spaces ("List Products"), which most
      code generators will mangle.

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/edf-energy-kraken-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.