EDF Energy · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the EDF Kraken Customer Migration (Data Import) API

10 actions 10 updates servers extends openapi/edf-energy-kraken-data-import-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for EDF Energy's API. It is a proposal applied on top of the contract, not a document EDF Energy publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-agentic-accessx-notex-apievangelist-providerx-apievangelist-audiencex-apievangelist-purposex-onboardingx-conventionsx-error-registry

Targets 8

$.info
$
$.paths['/v1/data-import/account-import-process/process/'].post
$.paths['/v1/data-import/account-import-process/create-or-update/'].post
$.paths['/v1/data-import/validate-account/'].post
$.paths['/v2/data-import/accounts/validate/'].post
$.paths['/v2/data-import/accounts/'].post
$.paths['/v1/data-import/payment-instruction/create/'].post

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the EDF Kraken Customer Migration (Data Import) API
  version: 1.0.0
extends: openapi/edf-energy-kraken-data-import-openapi.yml
x-apievangelist:
  generated: '2026-07-27'
  method: generated
  source: >-
    Enhancements derived from the artifacts in this repository, applied over the verbatim
    OpenAPI 3.0.3 document EDF serves at
    https://api.edfgb-kraken.energy/data-import/schema/ (HTTP 200, anonymous, 2026-07-27).
    The original document is never mutated.
  note: >-
    This is a partner-facing contract, not a public one: every operation requires
    authentication and a migration relationship with EDF. It is also the only part of the
    platform with no GraphQL equivalent.
actions:
- target: $.info
  update:
    x-apievangelist-provider: edf-energy
    x-apievangelist-audience: partner
    x-apievangelist-purpose: >-
      The machine-readable expression of how a customer book moves between suppliers onto
      Kraken. EDF used this platform to migrate 5.8 million of its own accounts in fifteen
      months.
    x-onboarding: >-
      Not self-service. Requires a migration relationship with EDF and credentials issued
      by them; there is no signup form.
    x-conventions: conventions/edf-energy-conventions.yml
    x-error-registry: https://developer.edfgb-kraken.energy/graphql/reference/error-codes/
    x-graphql-equivalent: none — this API is REST-only (see mcp/edf-energy-tool-crosswalk.yml)
- target: $
  update:
    servers:
    - url: https://api.edfgb-kraken.energy/
      description: >-
        Production. The served document declares no servers[]; paths carry the
        /v1/data-import/ and /v2/data-import/ prefixes themselves.
- target: $.info
  update:
    x-key-identifiers:
      import_supplier_code: The losing supplier whose customer book is being imported.
      external_account_number: The account number as held by the losing supplier.
    x-versioning: >-
      Two live majors in the same document — /v1/data-import/ and /v2/data-import/. v2
      supersedes the v1 account-creation and validation path with a scheduled
      (asynchronous) model.
- target: $.paths['/v1/data-import/account-import-process/process/'].post
  update:
    x-agentic-access:
      action-class: acting
      consequence: physical
      audit: required
      human-in-the-loop: required
    x-note: >-
      Processes a real customer's transfer between suppliers. This is the highest
      consequence operation in the repository — it moves a household's energy supply.
      Declares a 429, the only rate-limited response in either document.
    x-idempotency: >-
      None declared. The create-or-update operation is upsert-shaped by name, which is the
      only replay protection on this surface; no Idempotency-Key is accepted.
- target: $.paths['/v1/data-import/account-import-process/create-or-update/'].post
  update:
    x-agentic-access:
      action-class: acting
      consequence: write
      audit: required
    x-semantics: Upsert keyed on import_supplier_code + the account's external identifier.
- target: $.paths['/v1/data-import/validate-account/'].post
  update:
    x-agentic-access:
      action-class: acting
      consequence: write
    x-note: Dry-run validation; safe to call before the irreversible process step.
- target: $.paths['/v2/data-import/accounts/validate/'].post
  update:
    x-agentic-access:
      action-class: acting
      consequence: write
    x-note: v2 replacement for /v1/data-import/validate-account/.
- target: $.paths['/v2/data-import/accounts/'].post
  update:
    x-agentic-access:
      action-class: acting
      consequence: physical
      audit: required
      human-in-the-loop: required
    x-note: Schedules asynchronous account creation; poll V2 Account Import Status for the outcome.
- target: $.paths['/v1/data-import/payment-instruction/create/'].post
  update:
    x-agentic-access:
      action-class: acting
      consequence: physical
      audit: required
      human-in-the-loop: required
    x-note: Creates a payment instruction (e.g. a direct debit) against a migrated account.
- target: $.info
  update:
    x-spec-gaps:
    - No servers[] array.
    - >-
      33 `deprecated: true` flags on request parameters and schema properties, but no
      deprecation dates or replacement fields named — unlike the GraphQL schema, where
      every deprecation carries a marked-on date and a scheduled removal date.
    - No response examples.
    - >-
      Errors are declared as bare 400/404/429/500 status codes without a consistent
      documented body schema; the behavioural vocabulary lives in the KT-CT-* registry.
    - >-
      operationIds are human-readable strings with spaces ("V1 Validate Account"), which
      most code generators will mangle.