FERC · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the FERC Open Data API

6 actions 6 updates servers extends openapi/ferc-data-api-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for FERC's API. It is a proposal applied on top of the contract, not a document FERC publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

versioncontactlicensex-apievangelist-enrichedx-rate-limitserversApiKeyHeaderAuthresponses

Targets 6

$.info
$
$.components.securitySchemes
$.paths['/data-assets/'].get
$.paths['/dataset/{id}/data/'].get
$.paths['/dataset/{id}/dictionary/'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the FERC Open Data API
  version: 1.0.0
extends: openapi/ferc-data-api-openapi.json
x-provenance:
  generated: '2026-07-27'
  method: generated
  source: >-
    https://data.ferc.gov/developer/gettingstarted/api-key-usage/,
    https://data.ferc.gov/developer/gettingstarted/understanding-our-apis/, live probes 2026-07-27
  note: >-
    FERC's published OpenAPI is a 3.0.0 document that still carries the Swagger 2.0 `host` and
    `schemes` keys, names a STAGING host, omits info.version and info.contact, declares only the
    query-parameter API key, and documents 401 for an auth failure where the live gateway returns
    403. Every action below corrects one of those against something FERC itself publishes or against
    an observed response. The original file is never mutated.
actions:
  - target: $.info
    description: Add version, contact and licence, and record the API Evangelist provenance.
    update:
      version: '2026-07-27'
      contact:
        name: FERC Online Support
        url: https://data.ferc.gov/developer/helpandsupport/
      license:
        name: U.S. Government Work (public domain, 17 U.S.C. 105)
        url: https://data.ferc.gov/disclaimer/
      x-apievangelist-enriched: '2026-07-27'
      x-rate-limit: 1000 requests per hour per API key, rolling
  - target: $
    description: >-
      Add the real production servers block. FERC's document has no `servers` and its `host` key
      names api-staging.data.ferc.gov; the production base URL published on the API Key Usage page
      and verified live is https://api.data.ferc.gov/v1.
    update:
      servers:
        - url: https://api.data.ferc.gov/v1
          description: Production — documented at data.ferc.gov and verified live 2026-07-27.
  - target: $.components.securitySchemes
    description: >-
      Add the X-Api-Key header scheme. FERC documents the header as the RECOMMENDED method and the
      query parameter as the less secure alternative, but only the query parameter is in the spec.
    update:
      ApiKeyHeaderAuth:
        type: apiKey
        in: header
        name: X-Api-Key
        description: >-
          Recommended. Keeps the key out of URLs and logs. Documented at
          https://data.ferc.gov/developer/gettingstarted/api-key-usage/
  - target: $.paths['/data-assets/'].get
    description: >-
      Record the observed gateway behaviour — the documented 401 is not what the API Umbrella gateway
      returns for a missing or invalid key.
    update:
      responses:
        '403':
          description: >-
            Forbidden — API_KEY_MISSING (no key supplied) or API_KEY_INVALID (bad key). Observed
            2026-07-27; this, not the documented 401, is what the gateway returns.
      x-response-headers:
        - X-RateLimit-Limit
        - X-RateLimit-Remaining
        - x-api-umbrella-request-id
  - target: $.paths['/dataset/{id}/data/'].get
    description: Warn that the response is unbounded and unfilterable.
    update:
      x-pagination: none
      x-caution: >-
        Returns the entire dataset — no filtering, no paging. Read the record count from
        /dataset/{id}/details/ before calling. The interactive console truncates to 100 rows; a
        client call does not.
  - target: $.paths['/dataset/{id}/dictionary/'].get
    description: Note that a dictionary is optional per dataset.
    update:
      x-optional-resource: >-
        Not every dataset has a data dictionary; a 404 here means "no dictionary published", not
        "bad dataset id".