SNHP · OpenAPI Overlay 1.0.0

API Evangelist enhancements for Game Theory Layer for AI Agents (SNHP)

Overlay generated 2026-09-19 (method: generated). Adds what the served OpenAPI omits and the provider documents elsewhere: servers, the two documented API-key schemes applied to the 25 key-gated operations, the 7 undeclared tag names, the documented 429 with Retry-After, the observed 402 problem+json body, the one idempotent write, the GDPR operations, the MPP/AP2 domain-standard markers, and the MCP tool / agent-card skill bindings. Applies to openapi/snhp-dev-openapi.yml; never mutates openapi/_original/.

40 actions 40 updates servers extends openapi/snhp-dev-openapi.yml
Authorship not recorded No authorship marker is recorded for this file. It is not presented as the provider's.
View Overlay File View on GitHub Overlay Specification

What the actions change

securityx-apievangelist-note429x-data-subject-rightx-domain-standardx-agent-card-skillx-mcp-toolx-apievangelist

Targets 39 · first 16 shown; the file carries all of them

$.info
$
$.components
$.paths[*][?(@.operationId=='checkout_session_v1_billing_checkout_session_post')]
$.paths[*][?(@.operationId=='agentic_topup_v1_billing_agentic_topup_post')]
$.paths[*][?(@.operationId=='webhook_v1_billing_webhook_post')]
$.paths[*][?(@.operationId=='balance_v1_billing_balance_get')]
$.paths[*][?(@.operationId=='open_advice_session_v1_advice_session_post')]
$.paths[*][?(@.operationId=='advice_move_v1_advice_move_post')]
$.paths[*][?(@.operationId=='advice_bundle_move_v1_advice_bundle_post')]
$.paths[*][?(@.operationId=='close_advice_session_v1_advice_close_post')]
$.paths[*][?(@.operationId=='rotate_key_v1_keys_rotate_post')]
$.paths[*][?(@.operationId=='advice_request_v1_advice_request_post')]
$.paths[*][?(@.operationId=='store_catalog_v1_store_catalog_get')]
$.paths[*][?(@.operationId=='store_notary_pubkey_v1_store_notary_pubkey_get')]
$.paths[*][?(@.operationId=='store_fetch_v1_fetch_post')]

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for Game Theory Layer for AI Agents (SNHP)
  version: 1.0.0
  description: 'Overlay generated 2026-09-19 (method: generated). Adds what the served OpenAPI omits and the provider
    documents elsewhere: servers, the two documented API-key schemes applied to the 25 key-gated operations, the
    7 undeclared tag names, the documented 429 with Retry-After, the observed 402 problem+json body, the one idempotent
    write, the GDPR operations, the MPP/AP2 domain-standard markers, and the MCP tool / agent-card skill bindings.
    Applies to openapi/snhp-dev-openapi.yml; never mutates openapi/_original/.'
extends: openapi/snhp-dev-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist:
      profiled: '2026-09-19'
      repo: https://github.com/api-evangelist/snhp-dev
      note: Enhancements proposed by API Evangelist; the served document at https://snhp.dev/openapi.json is unmodified
        in openapi/_original/.
- target: $
  update:
    servers:
    - url: https://snhp.dev
      description: Primary host (identical on api.snhp.dev, www.snhp.dev, snhp.fly.dev) — the served spec declares
        no servers[]; stated in llms.txt and /.well-known/agents.json http_base
- target: $.components
  update:
    securitySchemes:
      BearerKey:
        type: http
        scheme: bearer
        bearerFormat: gt_*
        description: Self-issued key from POST /v1/keys. Sending it as a header moves the caller from the 60/min-per-IP
          floor to the 600/min-per-key lane.
      XApiKey:
        type: apiKey
        in: header
        name: X-API-Key
        description: Equivalent to BearerKey.
- target: $
  update:
    tags:
    - name: billing
      description: Wallet funding (Stripe Checkout, agentic top-up, inbound Stripe webhook) and balance
    - name: helper
      description: Rent-renewal situation helper (free, no key) and its privacy disclosure
    - name: mpp
      description: 'Machine Payments Protocol: manifest + SPT top-up (402 challenge flow)'
    - name: notary
      description: Receipt notary public key and standalone receipt verification
    - name: rent
      description: Rent-renewal market data and offer check
    - name: store
      description: 'The prepaid counter: catalog, notary key, demand box, blind locker park/retrieve, observatory'
    - name: vend
      description: Vending-machine quotes and settlement
  description: Declare the 7 tag names operations already use but the root tags[] omits
- target: $.paths[*][?(@.operationId=='checkout_session_v1_billing_checkout_session_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='agentic_topup_v1_billing_agentic_topup_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='webhook_v1_billing_webhook_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='balance_v1_billing_balance_get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='open_advice_session_v1_advice_session_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='advice_move_v1_advice_move_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='advice_bundle_move_v1_advice_bundle_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='close_advice_session_v1_advice_close_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='rotate_key_v1_keys_rotate_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='advice_request_v1_advice_request_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_catalog_v1_store_catalog_get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_notary_pubkey_v1_store_notary_pubkey_get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_fetch_v1_fetch_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_request_v1_store_request_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_request_status_v1_store_request__request_id__get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_requests_v1_store_requests_get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_observatory_v1_store_observatory_get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_my_requests_v1_store_my_requests_get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_park_v1_store_park_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='store_retrieve_v1_store_parcel__ticket__get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='memory_save_v1_memory_save_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='memory_load_v1_memory_parcel__ticket__get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='telemetry_report_outcome_v1_telemetry_report_outcome_post')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='telemetry_delete_v1_telemetry_delete_delete')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='telemetry_export_v1_telemetry_export_get')]
  update:
    security:
    - BearerKey: []
    - XApiKey: []
    x-apievangelist-note: Key required per provider docs (missing key answers 422 "Field required" on header X-API-Key
      or body api_key); the served spec declares no security.
- target: $.paths[*][?(@.operationId=='negotiate_turn_endpoint_v1_negotiate_turn_post')].responses
  update:
    '429': &id001
      description: 'Too Many Requests — documented token bucket: 60/min per IP keyless, 600/min per key (header
        only), 10/hour per IP on POST /v1/keys. Always carries Retry-After (whole seconds).'
      headers:
        Retry-After:
          schema:
            type: integer
          description: Whole seconds until a token frees up.
- target: $.paths[*][?(@.operationId=='issue_key_v1_keys_post')].responses
  update:
    '429': *id001
- target: $.paths[*][?(@.operationId=='negotiate_bundle_endpoint_v1_negotiate_bundle_post')].responses
  update:
    '429': *id001
- target: $.paths['/v1/mpp/topup'].post.responses['402']
  update:
    content:
      application/problem+json:
        schema:
          type: object
          properties:
            type:
              type: string
              const: https://paymentauth.org/problems/payment-required
            title:
              type: string
            status:
              type: integer
              const: 402
            detail:
              type: string
            challengeId:
              type: string
            price_cents:
              type: integer
            base_cents:
              type: integer
            fee_cents:
              type: integer
            counter_fee_pct:
              type: integer
    headers:
      WWW-Authenticate:
        schema:
          type: string
        description: Payment id="...", realm="snhp.dev", method="stripe", intent="charge", request="<base64 challenge>",
          description="...", expires="<ISO 8601>" — observed live 2026-09-19
      Accept-Payment:
        schema:
          type: string
          const: stripe
  description: Body and headers observed on the live 402; the served spec declares the status with empty content
- target: $.paths['/v1/keys'].post
  update:
    x-idempotent: true
    x-idempotency-key: agent_id (natural key, 24-hour window)
    x-idempotency-note: The only idempotent write in the API per the operation description.
- target: $.paths['/v1/telemetry/delete'].delete
  update:
    x-data-subject-right: GDPR Article 17 erasure
    x-window: 78 weeks of week-hashes
- target: $.paths['/v1/telemetry/export'].get
  update:
    x-data-subject-right: GDPR Article 15 access
- target: $.paths['/v1/a2a/settle'].post
  update:
    x-domain-standard: AP2 (Agent Payments Protocol) Cart / Intent Mandate as VC-JWT; verification key at GET /v1/keys/settlement_notary
- target: $.paths['/v1/mpp/topup'].post
  update:
    x-domain-standard: MPP (Machine Payments Protocol) — Stripe Shared Payment Token; manifest at GET /v1/mpp/manifest
- target: $.paths['/v1/negotiate/turn'].post
  update:
    x-agent-card-skill: negotiate_turn
    x-mcp-tool:
    - negotiate
    - gt_negotiate_turn
    x-determinism: non-deterministic (free tier); the $2 session (POST /v1/advice/session) is deterministic and
      receipted
- target: $.paths['/v1/negotiate/bundle'].post
  update:
    x-agent-card-skill: negotiate_bundle
    x-mcp-tool:
    - negotiate_bundle
    - gt_negotiate_bundle