Ledger · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Ledger Wallet Swap provider contract

2 actions 2 updates update extends openapi/ledger-swap-provider-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Ledger's API. It is a proposal applied on top of the contract, not a document Ledger publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-profilex-apievangelist-harvestedx-apievangelist-discovered-viax-apievangelist-contract-directionx-apievangelist-findings

Targets 1

$.info

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Ledger Wallet Swap provider contract
  version: 1.0.0
extends: openapi/ledger-swap-provider-openapi.yml
x-generated: '2026-08-25'
x-method: generated
x-source: >-
  Harvested 2026-08-25 from https://developers.ledger.com/exchange/openapi/swap-provider-openapi.yml,
  discovered through Ledger's own RFC 9727 linkset at
  https://developers.ledger.com/.well-known/api-catalog.
actions:
  - target: $.info
    update:
      x-apievangelist-profile: https://apis.io/provider/ledger
      x-apievangelist-harvested: '2026-08-25'
      x-apievangelist-discovered-via: https://developers.ledger.com/.well-known/api-catalog
      x-apievangelist-contract-direction: >-
        INVERTED. This document specifies the API an exchange PARTNER must implement; Ledger is the
        client, not the server. That is why it carries no servers[] block and why the base URL is
        correctly absent rather than missing — the host is the partner's own.
  - target: $.info
    update:
      x-apievangelist-findings:
        servers_absent_by_design: true
        tags_declared: 0
        tags_note: >-
          No tags[] and no per-operation tags across all five exchange contracts, so a merged
          reference cannot group them.
        summaries_missing:
          count: 6
          total: 7
          note: Only /webhook/{swapId}/status carries no summary gap; the rest rely on description alone.
        error_format:
          current: bespoke
          note: >-
            Sibling contracts diverge — the buy contract returns text/plain for its 400s while
            sell, card and earn return application/json. One envelope across the five would remove a
            real integration tax for a provider implementing more than one.
        strength: >-
          The statusUpdate webhook description is unusually good: it states the auth model, the
          asynchronous acknowledgement semantics ("a 200 means the update was authenticated,
          validated and queued, not that it has already been persisted"), the applicability window
          ("only while the swap is still in a non-final status"), the status-mapping behaviour, and
          the deliberate 401-on-unknown-provider enumeration guard. Most webhook contracts in the
          catalog state none of these.