EDF Kraken REST API

The REST half of EDF's Kraken platform API, described by a first-party OpenAPI 3.0.3 document that EDF serves itself at https://api.edfgb-kraken.energy/v1/schema?namespaces=default and renders through ReDoc on its developer portal. Harvested verbatim on 2026-07-27 at HTTP 200 with no credentials: 27 paths and 57 component schemas covering energy products and their electricity and gas tariffs (day, night, standard, off-peak and peak EV unit rates and standing charges), grid supply points, electricity and gas meter point consumption, account creation, tariff renewal, quotes and payment intents. Access is split inside the same document: /v1/products/ carries an empty security option and returned HTTP 200 anonymously with 21 live EDF products, and /v1/industry/grid-supply-points/ resolved a postcode to GSP group _C anonymously, while /v1/electricity-meter-points/{mpan}/ and the consumption endpoints require KeyAuthentication ("Authorization: Token ...") or a Kraken JWT. Five security schemes are declared: AccountUserAPIKeyAuthentication, AffiliateAuthentication, DRFKrakenTokenAuthentication, KeyAuthentication and PartnerUserOnlyAuthentication.

Documentation

Specifications

Other Resources

OpenAPI Specification

edf-energy-kraken-openapi.yml Raw ↑
# EDF Energy (EDF GB) Kraken REST API — OpenAPI 3.0.3, harvested verbatim.
# Source URL  : https://api.edfgb-kraken.energy/v1/schema?namespaces=default
# Linked from : https://developer.edfgb-kraken.energy/rest/reference/ (ReDoc spec-url attribute)
# HTTP status : 200, Content-Type application/vnd.oai.openapi; charset=utf-8
# Fetched     : 2026-07-27, anonymously, no API key, no account
# Provenance  : first-party EDF-hosted document. Nothing was added, removed or altered;
#               these comment lines are the only addition and do not change the parsed document.
openapi: 3.0.3
info:
  title: Kraken
  version: v1
paths:
  /data-import/schema/:
    get:
      operationId: Data Import Open Api Schema
      description: |-
        Base OpenAPI schema endpoint that filters URL patterns by namespace.

        Subclasses must define ``schema_namespaces`` to control which URL
        namespaces appear in the generated schema.
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - json
          - yaml
      tags:
      - data-import
      security:
      - AccountUserAPIKeyAuthentication: []
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      - AffiliateAuthentication: []
      - PartnerUserOnlyAuthentication: []
      - {}
      responses:
        '200':
          content:
            application/vnd.oai.openapi:
              schema:
                type: object
            application/yaml:
              schema:
                type: object
            application/vnd.oai.openapi+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
          description: ''
  /external-client-healthcheck/:
    get:
      operationId: External Client Health Check
      description: |-
        Healthcheck endpoint for external clients.

        When called, this API will return a 200 status and increment a metric.

        This endpoint allows clients to implement a healthcheck that is also supported
        by monitoring on the Kraken side.
      tags:
      - external-client-healthcheck
      security:
      - {}
      responses:
        '200':
          description: No response body
  /external-events/schema/:
    get:
      operationId: Open Api Schema
      description: |-
        OpenApi3 schema for this API. Format can be selected via content negotiation.

        - YAML: application/vnd.oai.openapi
        - JSON: application/vnd.oai.openapi+json
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - json
          - yaml
      tags:
      - external-events
      security:
      - {}
      responses:
        '200':
          content:
            application/vnd.oai.openapi:
              schema:
                type: object
            application/yaml:
              schema:
                type: object
            application/vnd.oai.openapi+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
          description: ''
  /v1/accounts/:
    post:
      operationId: Create an account
      description: 'WARNING: This endpoint is only available to partner organisations.'
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Create'
            examples:
              CreateAccountPayload:
                value:
                  reference: 12067-056785
                  sold_at: '2017-07-28T14:30:00+01:00'
                  account_type: DOMESTIC
                  source: INTERNET
                  is_change_of_tenancy: false
                  referral_code: some-referral-123
                  quote_code: 1981fd3936cc4cfda70b2e697347b885
                  affiliate: {}
                  payment:
                    method: MONTHLY_DIRECT_DEBIT
                    account_name: Chris Johnson
                    account_number: '12345678'
                    account_sort_code: '111111'
                    payment_day: 1
                  billing_address:
                    address_line_1: 87 Doveys Close
                    address_line_2: ''
                    address_line_3: ''
                    town: Ringwood
                    county: ''
                    postcode: BH24 4BP
                  users:
                  - title: Dr
                    given_name: Chris
                    family_name: Johnson
                    date_of_birth: '1966-01-01'
                    email: chris@example.com
                    mobile: 07742628216
                    landline: 02084459876
                    opted_in_for_marketing: false
                    opted_in_to_third_parties: false
                    psr:
                      requires_signup: false
                  electricity_meter_points:
                  - tariff_code: E-1R-VAR-17-01-11-A
                    quote:
                      annual_payment: 46576
                    consumption_standard: 3100
                    mpan: '2000024512368'
                    address:
                      address_line_1: 87 Doveys Close
                      address_line_2: ''
                      address_line_3: ''
                      town: Ringwood
                      county: ''
                      postcode: BH24 4BP
                    meter_type: CREDIT
                    has_smart_meter: false
                    current_supplier_name: SUP
                    current_supplier_tariff: SUP-123
                  gas_meter_points:
                  - tariff_code: G-1R-VAR-17-01-11-A
                    mprn: '3016362107'
                    consumption_standard: 12500
                    quote:
                      annual_payment: 44961
                  metadata:
                  - key: metadata_key
                    value:
                      melo: 10284
                      some_data: some_value
                summary: Create account payload
              CreateBusinessAccountPayload:
                value:
                  account_type: BUSINESS
                  business:
                    name: Acme Corporation Limited
                    number: 09263424
                    business_type: LIMITED
                    is_ccl_exempt: false
                    is_vat_exempt: false
                    head_count: 25
                    annual_turnover: 575000
                  electricity_meter_points:
                  - unit_rate_uplift: '0.5'
                    bespoke_tariff_rates:
                      standing_charge: '13.25'
                      unit_rates:
                      - unit_rate: '12.6'
                        rate_type: STANDARD
                  gas_meter_points:
                  - unit_rate_uplift: '0.5'
                    bespoke_tariff_rates:
                      standing_charge: '13.25'
                      unit_rate: '3.25'
                summary: Create business account payload
        required: true
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
              examples:
                AccountCreated:
                  value:
                    number: A-12341234
                  summary: Account created
                AccountAndUserAreCreated.:
                  value:
                    number: A-12341234
                    password_reset:
                      user_id: user_pk_b64_encoded
                      token: cmlx6w-1232911237f5d13422c154c07
                  summary: Account and user are created.
          description: Account successfully created
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ErrorDuringAccountCreation,InvestigationNeeded:
                  value:
                    detail: We are unable to create an account, however the error
                      will be investigated internally.
                  summary: Error during account creation, investigation needed
          description: The submission has incurred an error, but requires further
            investigation from a member of our team in order to complete the request.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ValidationErrors:
                  value:
                    detail: References already exist
                  summary: Validation errors
          description: The submissions incurred validation errors that cannot be fixed
            by a member of our team. This may occur if the provided reference is a
            duplicate and the existing enrolment has not previously been rejected.
  /v1/accounts/{account_number}/tariff-renewal/:
    post:
      operationId: Renew a business tariff
      description: 'This end-point allows a new agreement to be created for an existing
        account. It is restricted to business accounts. WARNING: This endpoint is
        only available to partner organisations.'
      parameters:
      - in: path
        name: account_number
        schema:
          type: string
        description: Number of the account
        required: true
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BusinessTariffRenewal'
            examples:
              RenewBusinessTariffPayload:
                value:
                  agreements:
                  - mpxn: '1013004420117'
                    tariff_code: E-1R-SOME-PRODUCT-J
                    valid_from_date: '2019-12-01'
                    valid_to_date: '2020-12-01'
                    bespoke_tariff_rates:
                    - meter_serial_number: Z16N389556
                      standing_charge: 3.25
                      registers:
                      - register_identifier: '1'
                        unit_rate: 15.6
                    commission:
                      affiliate_organisation_name: Some Partner
                      unit_rate_uplift: '1.00'
                  - mpxn: '9113681703'
                    tariff_code: G-1R-SOME-PRODUCT-J
                    valid_from_date: '2019-12-01'
                    valid_to_date: '2020-12-01'
                    bespoke_tariff_rates:
                    - meter_serial_number: GA1244364577
                      standing_charge: 3.25
                      unit_rate: 15.6
                    commission:
                      affiliate_organisation_name: Some Partner
                      unit_rate_uplift: '1.00'
                summary: Renew business tariff payload
        required: true
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgreementsCreated'
              examples:
                BusinessTariffRenewalCreated:
                  value:
                    account_number: A-12AB34CD
                    agreements:
                    - mpxn: '1013004420117'
                      tariff_code: E-1R-SOME-PRODUCT-J
                      valid_from_date: '2019-12-01'
                      valid_to_date: '2020-12-01'
                  summary: Business tariff renewal created
          description: Agreement(s) successfully created
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationOrDomainError'
              examples:
                ValidationErrors:
                  value:
                    errors:
                    - Account is not a business account.
                  summary: Validation errors
          description: Could not create agreement due to domain or validation errors.
        '404':
          description: The account does not exist.
        '401':
          description: Incorrect authentication.
        '403':
          description: The user does not have sufficient permissions for this action.
        '500':
          description: Intermittent internal error. If it persists, please get in
            touch with the support team.
  /v1/electricity-meter-points/{mpan}/:
    get:
      operationId: Get Electricity Meter Point
      description: Retrieve the details of a meter-point. This endpoint can be used
        to get the GSP of a given meter-point.
      parameters:
      - in: path
        name: mpan
        schema:
          type: string
        required: true
      tags:
      - v1
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ElectricityMeterPoint'
              examples:
                DetailsOfAnElectricityMeter-point:
                  value:
                    gsp: _H
                    mpan: '2000024512368'
                    profile_class: 1
                  summary: Details of an electricity meter-point
          description: ''
  /v1/electricity-meter-points/{mpan}/meters/{serial_number}/consumption/:
    get:
      operationId: List consumption for an electricity meter
      description: 'Return a list of consumption values (in kWh) for half-hour periods
        for a given meter-point and meter. WARNING: Half-hourly consumption data is
        only available for smart meters. Requests for consumption data for non-smart
        meters will return an empty response payload.'
      parameters:
      - name: group_by
        required: false
        in: query
        description: 'Aggregates consumption over a specified time period. A day is
          considered to start and end at midnight in the server’s timezone. The default
          is that consumption is returned in half-hour periods. Accepted values are:
          * ‘hour’ * ‘day’ * ‘week’ * ‘month’ * ‘quarter’.'
        schema:
          type: string
      - in: path
        name: mpan
        schema:
          type: string
        required: true
      - name: order_by
        required: false
        in: query
        description: 'Ordering of results returned. Default is that results are returned
          in reverse order from latest available figure. Valid values: * ‘period’,
          to give results ordered forward. * ‘-period’, (default), to give results
          ordered from most recent backwards.'
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Page size of returned results. Default is 100, maximum is 25000
          to give a full year of half-hourly consumption details.
        schema:
          type: integer
      - name: period_from
        required: false
        in: query
        description: Show results from the given datetime (inclusive). This parameter
          can be provided on its own.
        schema:
          type: datetime
      - name: period_to
        required: false
        in: query
        description: Show results up to the given datetime (exclusive). You must also
          provide the period_from parameter in order to create a range.
        schema:
          type: datetime
      - in: path
        name: serial_number
        schema:
          type: string
        required: true
      tags:
      - v1
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedConsumptionList'
              examples:
                ListOfConsumptionValues:
                  value:
                    count: 123
                    next: https://api.edfgb-kraken.energy/v1/electricity-meter-points/S1212345678901/meters/Z16N389556/consumption/?page=4
                    previous: https://api.edfgb-kraken.energy/v1/electricity-meter-points/S1212345678901/meters/Z16N389556/consumption/?page=2
                    results:
                    - - consumption: 0.063
                        interval_start: 2018-05-19T00:30:00+0100
                        interval_end: 2018-05-19T01:00:00+0100
                      - consumption: 0.071
                        interval_start: 2018-05-19T00:00:00+0100
                        interval_end: 2018-05-19T00:30:00+0100
                      - consumption: 0.073
                        interval_start: 2018-05-18T23:30:00+0100
                        interval_end: 2018-05-18T00:00:00+0100
                  summary: List of consumption values
          description: ''
  /v1/gas-meter-points/{mprn}/meters/{serial_number}/consumption/:
    get:
      operationId: List consumption for a gas meter
      description: 'Return a list of consumption values (in kWh for SMETS1 and in
        m^3 for SMETS2) for half-hour periods for a given gas meter-point and meter.
        WARNING: Half-hourly consumption data is only available for smart meters.
        Requests for consumption data for non-smart meters will return an empty response
        payload.'
      parameters:
      - name: group_by
        required: false
        in: query
        description: 'Aggregates consumption over a specified time period. A day is
          considered to start and end at midnight in the server’s timezone. The default
          is that consumption is returned in half-hour periods. Accepted values are:
          * ‘hour’ * ‘day’ * ‘week’ * ‘month’ * ‘quarter’.'
        schema:
          type: string
      - in: path
        name: mprn
        schema:
          type: string
        required: true
      - name: order_by
        required: false
        in: query
        description: 'Ordering of results returned. Default is that results are returned
          in reverse order from latest available figure. Valid values: * ‘period’,
          to give results ordered forward. * ‘-period’, (default), to give results
          ordered from most recent backwards.'
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Page size of returned results. Default is 100, maximum is 25000
          to give a full year of half-hourly consumption details.
        schema:
          type: integer
      - name: period_from
        required: false
        in: query
        description: Show results from the given datetime (inclusive). This parameter
          can be provided on its own.
        schema:
          type: datetime
      - name: period_to
        required: false
        in: query
        description: Show results up to the given datetime (exclusive). You must also
          provide the period_from parameter in order to create a range.
        schema:
          type: datetime
      - in: path
        name: serial_number
        schema:
          type: string
        required: true
      tags:
      - v1
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedConsumptionList'
              examples:
                ListOfConsumptionValues:
                  value:
                    count: 123
                    next: https://api.edfgb-kraken.energy/v1/gas-meter-points/1234987426/meters/Z16N389556/consumption/?page=4
                    previous: https://api.edfgb-kraken.energy/v1/gas-meter-points/1234987426/meters/Z16N389556/consumption/?page=2
                    results:
                    - - consumption: 0.063
                        interval_start: 2018-05-19T00:30:00+0100
                        interval_end: 2018-05-19T01:00:00+0100
                      - consumption: 0.071
                        interval_start: 2018-05-19T00:00:00+0100
                        interval_end: 2018-05-19T00:30:00+0100
                      - consumption: 0.073
                        interval_start: 2018-05-18T23:30:00+0100
                        interval_end: 2018-05-18T00:00:00+0100
                  summary: List of consumption values
          description: ''
  /v1/industry/grid-supply-points/:
    get:
      operationId: List Industry Grid Supply Points
      description: Return a list of GSP objects, optionally filtered by postcode.
        If we’re unable to map the passed postcode to a GSP, an empty list will be
        returned
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - in: query
        name: postcode
        schema:
          type: string
        description: A postcode to filter GSPs by.
      tags:
      - v1
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGridSupplyPointList'
              examples:
                ListGridSupplyPoints:
                  value:
                    count: 123
                    next: https://api.edfgb-kraken.energy/v1/industry/grid-supply-points/?page=4
                    previous: https://api.edfgb-kraken.energy/v1/industry/grid-supply-points/?page=2
                    results:
                    - - group_id: _A
                      - group_id: _B
                  summary: List grid supply points
          description: ''
  /v1/payment-intents/confirm/:
    post:
      operationId: Confirm a Stripe payment intent
      description: |-
        Create Stripe charge using Stripe's PaymentIntent model and Elements (js) which automatically
        applies for authentication exemptions and performs authentication. The intent will be confirm
        using the Stripe API, which then creates a charge.

        Docs: https://stripe.com/docs/payments/payment-intents/quickstart#manual-confirmation-flow
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmStripePaymentIntent'
            examples:
              ConfirmPaymentIntent:
                value:
                  account: A-12341234
                  amount: '12.99'
                  payment_intent_id: xxx_123123
                  description: Manual payment
                summary: Confirm payment intent
        required: true
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntentConfirmed'
              examples:
                PaymentIntentConfirmed:
                  value:
                    success: true
                  summary: Payment intent confirmed
          description: Payment intent successfully confirmed
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentErrorResponse'
              examples:
                CardDeclined:
                  value:
                    error: The card was declined
                  summary: Card declined
          description: Could not confirm payment intent
  /v1/payment-intents/create/:
    post:
      operationId: Create a Stripe payment intent
      description: |-
        Create a Stripe payment using Stripe's PaymentIntent and Elements (js) which automatically
        applies for authentication exemptions and performs authentication. Handles both immediate and
        scheduled Stripe card payments.

        Docs: https://stripe.com/docs/payments/payment-intents/quickstart#manual-confirmation-flow
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateStripePaymentIntent'
            examples:
              CreatePaymentIntent:
                value:
                  account: A-12341234
                  amount: '12.99'
                  payment_method_id: card_1234abcd
                  description: Manual payment
                summary: Create payment intent
        required: true
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentIntentCreated'
              examples:
                PaymentIntentCreated:
                  value:
                    requires_action: true
                    payment_intent_id: pi_3MtwBwLkdIwHu7ix28a3tqPa
                    payment_intent_client_secret: pi_3MtwBwLkdIwHu7ix28a3tqPa_secret_YrKJUKribcBjcG8HVhfZluoGH
                  summary: Payment intent created
          description: Payment intent successfully created
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentErrorResponse'
              examples:
                CardDeclined:
                  value:
                    error: The card was declined
                  summary: Card declined
          description: Could not create payment intent
  /v1/payment-intents/fail/:
    post:
      operationId: Mark a Stripe payment intent as failed
      description: |-
        Handle a failure when creating a Stripe charge using Stripe's PaymentIntent model and
        Elements (js) which automatically applies for authentication exemptions and performs
        authentication.

        Docs: https://stripe.com/docs/payments/payment-intents/quickstart#manual-confirmation-flow
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FailedStripePaymentIntent'
            examples:
              MarkPaymentIntentAsFailed:
                value:
                  account: A-12345
                  payment_intent_id: xxx_123123
                  error: Something went wrong
                summary: Mark payment intent as failed
        required: true
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      - {}
      responses:
        '200':
          description: No response body
  /v1/products/:
    get:
      operationId: List Products
      description: Return a list of energy products. By default, results will be public
        energy products but if the authenticated organisations will also see products
        available to their organisation.
      parameters:
      - in: query
        name: available_at
        schema:
          type: string
        description: Show products available for new agreements on the given datetime.
          Defaults to current datetime, effectively showing products that are currently
          available.
      - in: query
        name: brand
        schema:
          type: string
      - in: query
        name: is_business
        schema:
          type: boolean
        description: Show only business products
      - in: query
        name: is_green
        schema:
          type: boolean
        description: Show only green products
      - in: query
        name: is_historical
        schema:
          type: string
      - in: query
        name: is_prepay
        schema:
          type: boolean
        description: Show only pre-pay products
      - in: query
        name: is_tracker
        schema:
          type: boolean
        description: Show only tracker products
      - in: query
        name: is_variable
        schema:
          type: boolean
        description: Show only variable products
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      tags:
      - v1
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedProductsList'
              examples:
                ListOfProducts:
                  value:
                    count: 123
                    next: https://api.edfgb-kraken.energy/v1/products/?page=4
                    previous: https://api.edfgb-kraken.energy/v1/products/?page=2
                    results:
                    - direction: IMPORT
                      code: VAR-17-01-11
                      full_name: Flexible Tentacle Offer January 2017 v1
                      display_name: Flexible Tentacle
                      description: This great value 12 month fixed tariff guarantees…
                      is_variable: true
                      is_green: false
                      is_tracker: false
                      is_prepay: false
                      is_business: false
                      is_restricted: false
                      term: 12
                      available_from: '2017-05-05T05:37:27Z'
                      available_to: null
                      brand: TENTACLE_ENERGY
                      links:
                      - href: https://api.edfgb-kraken.energy/v1/products/VAR-17-01-11/
                        method: GET
                        rel: self
                  summary: List of products
          description: ''
  /v1/products/{product_code}/:
    get:
      operationId: Product
      parameters:
      - in: path
        name: product_code
        schema:
          type: string
        required: true
      tags:
      - v1
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
          description: ''
  /v1/products/{product_code}/electricity-tariffs/{tariff_code}/day-unit-rates/:
    get:
      operationId: Electricity Tariff Day Unit Rates
      parameters:
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: page_size
        required: false
        in: query
        description: Page size of returned results. Default is 100, maximum is 1500
          to give up to a month of half-hourly prices.
        schema:
          type: integer
      - name: period_from
        required: false
        in: query
        description: Show results from the given datetime (inclusive). This parameter
          can be provided on its own.
        schema:
          type: datetime
      - name: period_to
        required: false
        in: query
        description: Show results up to the given datetime (exclusive). You must also
          provide the period_from parameter in order to create a range.
        schema:
          type: datetime
      - in: path
        name: product_code
        schema:
          type: string
        required: true
      - in: path
        name: tariff_code
        schema:
          type: string
        required: true
      tags:
      - v1
      security:
      - KeyAuthentication: []
      - DRFKrakenTokenAuthentication: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedHistoricalChargeList'
          description: ''
  /v1/products/{product_code}/electricity-tariffs/{tariff_code}/ev-device-off-p

# --- truncated at 32 KB (119 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/edf-energy/refs/heads/main/openapi/edf-energy-kraken-openapi.yml