Airtm · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Airtm Enterprise API V2

5 actions 4 updates documentation extends openapi/airtm-enterprise-v2-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for Airtm's API. It is a proposal applied on top of the contract, not a document Airtm publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-enrichedx-error-catalogx-conventionsx-rate-limitsx-sandboxx-webhooks-catalogx-data-modeldescription

Targets 4

$.info
$.servers
$.components.securitySchemes.basicAuth
$

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Airtm Enterprise API V2
  version: 1.0.0
extends: openapi/airtm-enterprise-v2-openapi.json
x-generated: '2026-08-06'
x-method: generated
x-source: >-
  API Evangelist enrichment pass 2026-08-06. Captures our derived/searched findings as an Overlay so
  the harvested spec at openapi/airtm-enterprise-v2-openapi.json is never mutated.
actions:
- target: $.info
  update:
    x-apievangelist-enriched: '2026-08-06'
    x-error-catalog: errors/airtm-error-codes.yml
    x-conventions: conventions/airtm-conventions.yml
    x-rate-limits: rate-limits/airtm-rate-limits.yml
    x-sandbox: sandbox/airtm-sandbox.yml
    x-webhooks-catalog: asyncapi/airtm-webhooks.yml
    x-data-model: data-model/airtm-data-model.yml
- target: $.info
  description: >-
    OBSERVATION (API Evangelist): the full developer narrative — authentication, OIDC guide, Wallet
    Resource API reference, connecting/rate limits, the ~69-entry reason-code registry, FAQ and the
    entire changelog — is packed into this single info.description field (~95KB of markdown) rather
    than being served as addressable documentation pages. That makes the spec self-contained but makes
    every one of those sections unlinkable and unsearchable outside a rendered docs viewer.
- target: $.servers
  update:
  - url: https://api.enterprise.airtm.com/v2
    description: Production
  - url: https://api.stg.enterprise.airtm.com/v2
    description: Sandbox — testing with fake money; requires separate sandbox API keys
- target: $.components.securitySchemes.basicAuth
  update:
    description: >-
      HTTP Basic with the Enterprise API key as username and the secret key as password. Keys are
      generated at https://enterprise.airtm.com/settings; the secret is displayed once. Airtm
      recommends rotating every 90 days and supports a per-key inbound IP allowlist (ToggleAllowedIp).
    x-key-management-operations: [CreateApiKey, ListApiKeys, RevokeApiKey, ToggleAllowedIp]
- target: $
  update:
    x-apievangelist-gaps:
      global_security_missing: >-
        The document declares components.securitySchemes.basicAuth but sets NO top-level `security`
        requirement and no per-operation `security`, so a generated client cannot tell from the spec
        alone that every operation requires Basic auth. Adding `security: [{basicAuth: []}]` at the
        root would fix this.
      no_enumerated_error_responses: >-
        Every operation declares a single `default` response. None enumerates 401, 403, 409, 422 or
        429 explicitly, so code generators produce no typed error handling despite a rich published
        reason-code registry.
      few_examples: >-
        Only 3 of 51 operations carry request or response examples.
      rate_limit_headers_undocumented: >-
        A flat 10 rps per API key is documented in prose and 429 is the only signal; no
        X-RateLimit-* or Retry-After headers are described.
      webhooks_in_a_3_0_document: >-
        A top-level `webhooks` object with 8 events is present, but the document declares
        openapi 3.0.0, where `webhooks` is not a valid keyword. Declaring 3.1.0 would make the
        event surface legal and machine-consumable.
      wallet_connect_api_unspecified: >-
        The OAuth-gated Wallet Resource API at /api/connect/v1 is fully documented in prose inside
        info.description but has no paths, no schemas and no operationIds. It is invisible to every
        code generator and every agent.