Tabby · OpenAPI Overlay 1.0.0

Tabby Payments API — API Evangelist enrichment overlay

7 actions 7 updates update extends openapi/tabby-payments-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Tabby's API. It is a proposal applied on top of the contract, not a document Tabby publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-agentic-consequencex-idempotentx-idempotency-key-fieldx-reversalx-preconditionsx-api-evangelistx-regionsx-rate-limits

Targets 7

$.info
$
$.components.securitySchemes.bearerAuth
$.paths['/api/v2/payments/{id}/captures'].post
$.paths['/api/v2/payments/{id}/refunds'].post
$.paths['/api/v2/payments/{id}/close'].post
$.paths['/api/v2/payments/{id}'].put

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: Tabby Payments API — API Evangelist enrichment overlay
  version: 1.0.0
  x-generated: '2026-08-26'
  x-method: generated
  x-source: openapi/tabby-payments-api-openapi.yml
  x-note: >-
    Captures runtime semantics Tabby publishes in its documentation but does not express in the
    contract — rate limits, idempotency, reversal windows, environment selection and webhook
    delivery guarantees. Applies to openapi/tabby-payments-api-openapi.yml; the original spec is never mutated.
extends: openapi/tabby-payments-api-openapi.yml
actions:
  - target: $.info
    description: Record the region-specific base URLs and the API Evangelist enrichment provenance.
    update:
      x-api-evangelist:
        enriched: '2026-08-26'
        repo: https://github.com/api-evangelist/tabby
        conventions: conventions/tabby-conventions.yml
        errors: errors/tabby-problem-types.yml
        rate_limits: rate-limits/tabby-rate-limits.yml
        sandbox: sandbox/tabby-sandbox.yml
        data_model: data-model/tabby-data-model.yml
      x-regions:
        - region: UAE, Kuwait
          api: https://api.tabby.ai
          checkout: https://checkout.tabby.ai
          dashboard: https://merchant.tabby.ai
        - region: KSA
          api: https://api.tabby.sa
          checkout: https://checkout.tabby.sa
          dashboard: https://merchant.tabby.sa
  - target: $
    description: >-
      Record the rate limits Tabby publishes in prose but does not express in the contract, and the
      429 response the spec never declares.
    update:
      x-rate-limits:
        source: https://docs.tabby.ai/introduction/technical-requirements#rate-limit
        scope: per-api-key, per-operation-class
        exhaustion_status: 429
        response_headers: none
        live:
          create_session: 200 per 10s
          other: 100 per 1s
        test:
          create_session: 10 per 10s
          other: 50 per 1s
  - target: $.components.securitySchemes.bearerAuth
    description: Clarify the key prefixes that select environment, which the description omits.
    update:
      x-key-prefixes:
        live_secret: sk_
        test_secret: sk_test_
        live_public: pk_
        test_public: pk_test_
      x-environment-selection: >-
        Environment is chosen by the key, not by the host. The same base URL serves test and live.
  - target: $.paths['/api/v2/payments/{id}/captures'].post
    description: Record the documented idempotency mechanism and the reversal path.
    update:
      x-idempotent: true
      x-idempotency-key-field: reference_id
      x-idempotency-source: https://docs.tabby.ai/pay-in-4-custom-integration/payment-processing#idempotent-requests
      x-reversal:
        operationId: postPaymentRefund
        window: within 180 days of payment creation
      x-preconditions: Payment status must be AUTHORIZED; other statuses return 400.
      x-agentic-consequence: moves-money
  - target: $.paths['/api/v2/payments/{id}/refunds'].post
    description: Record idempotency and the irreversibility of a processed refund.
    update:
      x-idempotent: true
      x-idempotency-key-field: reference_id
      x-reversal: none
      x-irreversible: true
      x-irreversible-note: A processed refund cannot be cancelled.
      x-preconditions: >-
        Payment must be CLOSED; refund total cannot exceed the captured amount; within 180 days of
        payment creation.
      x-agentic-consequence: moves-money
  - target: $.paths['/api/v2/payments/{id}/close'].post
    description: Record close-as-cancel semantics and the 21-day Tabby-side auto-capture.
    update:
      x-reversal-of: authorization
      x-window: >-
        Closing without capture cancels the payment. Tabby leaves a non-captured AUTHORIZED payment
        untouched for 21 days, after which it may capture the remaining amount in full on its side.
      x-agentic-consequence: moves-money
  - target: $.paths['/api/v2/payments/{id}'].put
    description: Record that only order.reference_id is mutable.
    update:
      x-mutable-fields:
        - order.reference_id
      x-note: Other fields sent in the request are silently ignored.
      x-agentic-consequence: metadata-only