AlgoVoi Gateway API

The multi-tenant payment gateway (OpenAPI 3.1.0 "AlgoVoi Gateway" 1.0.0-phase1c, 115 operations, 99 schemas) at api.algovoi.co.uk: hosted checkout links and the checkout lifecycle (QR, build/submit txn, detect, status, cancel, abandon, cross-chain bridge), x402 and MPP gated resources and subscriptions, the AP2 mandate chain (intent/cart/pay/confirm/status), an A2A surface (message:send, tasks, pushNotificationConfigs, /a2a/jsonrpc, /a2a/gibberlink), customers, subscriptions, Tier 2 recurring authorities and hosted authorisation, payouts, compliance screening and a public compliance attestation, receipt and RFC 9421 verification, the suite store, signup proxies and the Agentic Payment Mandates portal. Authenticated with a tenant Bearer key (algv_) plus X-Tenant-Id; 300 req/min per tenant with X-RateLimit-* headers; Idempotency-Key on creates; Stripe-shaped HMAC-signed webhooks.

Operations 115

GET /health Health #
POST /auth/token Exchange Atb Cert #
GET /auth/token/status Session Status #
POST /v1/verify MPP payment verification #
POST /v1/ap2/verify AP2 mandate verification #
POST /v1/payouts Initiate on-chain payout #
POST /mpp/challenge Mpp Challenge #
GET /mpp/probe Mpp Probe #
PUT /mpp/probe Mpp Probe #
POST /mpp/probe Mpp Probe #
DELETE /mpp/probe Mpp Probe #
OPTIONS /mpp/probe Mpp Probe #
HEAD /mpp/probe Mpp Probe #
PATCH /mpp/probe Mpp Probe #
GET /mpp/{resource_id} Mpp Resource #
POST /mpp/sub/{resource_id} Mpp Subscription Resource #
GET /mpp/sub/{resource_id} Mpp Subscription Resource #
POST /ap2/intent Submit an IntentMandate to open an AP2 shopping session #
POST /ap2/cart Submit a merchant-signed CartMandate, verified against an accepted IntentMandate #
POST /ap2/pay Submit PaymentMandate; verify user_authorization and return crypto challenge #
POST /ap2/confirm Confirm on-chain transaction; gateway verifies via facilitator and issues JWT #
GET /ap2/status/{cart_id} Inspect AP2 mandate chain state by cart_id #
GET /ap2/extensions List AP2 extensions supported by this gateway #
GET /ext/scoped-authorization-receipts/v1 Scoped Auth Receipts Profile #
HEAD /ext/scoped-authorization-receipts/v1 Scoped Auth Receipts Profile #
GET /extendedAgentCard Extended Agent Card #
POST /message:send Send Message #
POST /message:stream Message Stream #
GET /tasks/{task_id}/pushNotificationConfigs/{config_id} Push Notification Config #
DELETE /tasks/{task_id}/pushNotificationConfigs/{config_id} Push Notification Config #
POST /tasks/{task_id}/pushNotificationConfigs Push Notification Config #
GET /tasks/{task_id}/pushNotificationConfigs Push Notification Config #
GET /tasks/{task_id} Get Task #
POST /tasks/{task_id}:cancel Cancel Task #
GET /tasks List Tasks #
POST /a2a/jsonrpc A2A Jsonrpc #
POST /a2a/gibberlink A2A Gibberlink #
POST /v1/payment-links Create a dynamic payment link #
POST /v1/customers Create Customer Endpoint #
GET /v1/customers List Customers Endpoint #
POST /v1/subscriptions Create Subscription Endpoint #
GET /v1/subscriptions List Subscriptions Endpoint #
GET /v1/subscriptions/{subscription_id} Get Subscription Endpoint #
PATCH /v1/subscriptions/{subscription_id} Update Subscription Endpoint #
POST /v1/subscriptions/{subscription_id}/cancel Cancel Subscription Endpoint #
POST /v1/subscriptions/{subscription_id}/pause Pause Subscription Endpoint #
POST /v1/subscriptions/{subscription_id}/resume Resume Subscription Endpoint #
GET /v1/subscriptions/{subscription_id}/invoices List Subscription Invoices Endpoint #
GET /subscription/{cancel_secret}/cancel Public Cancel Page #
POST /subscription/{cancel_secret}/cancel Public Cancel Commit #
POST /v1/recurr/auth/challenge Challenge Endpoint #
POST /v1/recurr/auth/verify Verify Endpoint #
GET /v1/recurr/me/subscriptions My Subscriptions #
GET /v1/recurr/me/subscriptions/{subscription_id} My Subscription Detail #
POST /v1/recurr/me/subscriptions/{subscription_id}/cancel My Subscription Cancel #
GET /v1/recurr/me/invoices My Invoices #
GET /recurr/portal Portal Page #
GET /recurr/cancel/{cancel_secret} Public Cancel Page #
POST /recurr/cancel/{cancel_secret} Public Cancel Commit #
POST /v1/recurring/authorities Create Authority Endpoint #
GET /v1/recurring/authorities List Authorities Endpoint #
GET /v1/recurring/authorities/{authority_id} Get Authority Endpoint #
POST /v1/recurring/authorities/{authority_id}/confirm Confirm Authority Endpoint #
POST /v1/recurring/authorities/{authority_id}/revoke Revoke Authority Endpoint #
POST /v1/recurring/authorities/{authority_id}/pause Pause Authority Endpoint #
POST /v1/recurring/authorities/{authority_id}/resume Resume Authority Endpoint #
POST /v1/recurring/pulls Manual Pull Endpoint #
GET /v1/recurring/auth/{token} Resolve hosted-auth signing token #
POST /v1/recurring/auth/{token}/confirm Confirm hosted-auth signing token + activate authority #
GET /v1/recurring/contracts/algorand/spending_cap_vault_v1 Compiled TEAL bytecode for the Algorand SpendingCapVault v1 contract #
GET /protected/{resource_id} Get Protected Resource #
GET /resources/{resource_id} Get Resource #
POST /x402/challenge Challenge #
POST /x402/verify Verify #
POST /checkout/{token}/verify Verify Checkout #
GET /checkout/{token}/qr Checkout Qr #
GET /checkout/{token}/build-txn Checkout Build Txn #
POST /checkout/{token}/submit-txn Checkout Submit Txn #
GET /checkout/{token}/detect Detect Payment #
POST /checkout/{token}/submit-sponsored Submit Sponsored #
POST /checkout/{token}/abandon Abandon Checkout #
POST /checkout/{token}/cancel Cancel Checkout #
GET /checkout/{token}/xchain/bridge-info Xchain Bridge Info #
POST /checkout/{token}/xchain/bridge-send Xchain Bridge Send #
POST /checkout/{token}/xchain/source-tx-recorded Xchain Source Tx Recorded #
GET /checkout/{token}/xchain/bridge-status/{tx_hash} Xchain Bridge Status #
POST /checkout/{token}/xchain/prepare Xchain Prepare #
POST /checkout/{token}/xchain/prepare-optin Xchain Prepare Optin #
POST /checkout/{token}/xchain/optin-submit Xchain Optin Submit #
POST /checkout/{token}/xchain/submit Xchain Submit #
GET /checkout/{token}/status Checkout Status #
POST /suite-store/checkout Suite Store Checkout #
POST /suite-store/settled Suite Store Settled #
POST /suite-store/order/{token}/activate Suite Store Activate #
GET /suite-store/order/{token}/status Suite Store Order Status #
POST /suite-store/mesh-fed/provision Provision #
GET /suite-store/mesh-fed/info Info #
GET /compliance/attestation Attestation #
POST /compliance/screen Screen #
POST /compliance/trust-query Trust Query #
POST /atb/license/activate Activate #
POST /v1/receipt/verify Verify a JWS compliance receipt #
GET /v1/receipt/settlement-evidence/{settled_payment_ref} Fetch chain-evidence capture status (and bundle, when captured) #
GET /verify/action-ref action_ref verifier — schema and spec reference #
POST /verify/action-ref Compute and verify an action_ref canonical hash #
GET /verify/rfc9421 RFC 9421 verifier — schema and spec reference #
POST /verify/rfc9421 Verify an RFC 9421 HTTP Message Signature #
GET /discovery/resources Discovery Resources #
GET /r/{tenant_short_id}/{resource_id} Public Resource #
POST /signup/create Signup Proxy #
POST /cloud-signup/create Cloud Signup Proxy #
POST /mandate/pay Mandate Pay #
GET /mandate/portal/{mandate_id} Get Mandate Portal #
POST /mandate/portal/{mandate_id}/topup/initiate Portal Topup Initiate #
POST /mandate/portal/{mandate_id}/topup/capture Portal Topup Capture #

Documentation

Specifications

Other Resources

🔗
Conventions
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/conventions/algovoi-co-uk-conventions.yml
🔗
Idempotency
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/conventions/algovoi-co-uk-conventions.yml
🔗
ErrorCatalog
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/errors/algovoi-co-uk-problem-types.yml
🔗
ErrorCodes
https://docs.algovoi.co.uk/api-reference/errors
🔗
Webhooks
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/asyncapi/algovoi-co-uk-webhooks.yml
🔗
Webhooks
https://docs.algovoi.co.uk/integrations/outbound-webhooks
🔗
Sandbox
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/sandbox/algovoi-co-uk-sandbox.yml
🔗
Plans
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/plans/algovoi-co-uk-plans-pricing.yml
🔗
DataModel
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/data-model/algovoi-co-uk-data-model.yml
🔗
Overlay
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/overlays/algovoi-co-uk-gateway-overlay.yaml
🔗
AgentCard
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/a2a/algovoi-co-uk-a2a.yml
🔗
AgentCard
https://api.algovoi.co.uk/.well-known/agent-card.json
🔗
AgentSkill
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/skills/algovoi-co-uk-algovoi.md
🔗
AgentSkill
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/skills/algovoi-co-uk-hosted-checkout.md
🔗
SignUp
https://dash.algovoi.co.uk/signup
🔗
Components
https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/components/algovoi-co-uk-components.yml

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/algovoi-gateway-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

algovoi-co-uk-gateway-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: AlgoVoi Gateway
  description: Public-facing x402 payment gateway.
  version: 1.0.0-phase1c
  x-guidance: To access payment-gated resources, send the required payment proof header. Use GET /mpp/{resource_id} for MPP or GET /protected/{resource_id} for x402.
paths:
  /health:
    get:
      tags:
      - health
      summary: Health
      operationId: health_health_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      x-payment-info:
        authMode: none
  /auth/token:
    post:
      tags:
      - agent-auth
      summary: Exchange Atb Cert
      description: 'Exchange an ATB ZKP certificate for an agent session token.


        Requires normal API key auth (X-Tenant-Id + Authorization: Bearer <api_key>)

        for this request only. The returned token is used for all subsequent calls

        within the session.'
      operationId: exchange_atb_cert_auth_token_post
      parameters:
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /auth/token/status:
    get:
      tags:
      - agent-auth
      summary: Session Status
      description: 'Return spend vs cap for a live agent session token.


        Pass the session token as `Authorization: Bearer <token>`.

        This endpoint does NOT require X-Tenant-Id — the tenant_id is read from

        the token claims. Returns 401 if the token is invalid or expired.'
      operationId: session_status_auth_token_status_get
      parameters:
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /v1/verify:
    post:
      tags:
      - v1
      summary: MPP payment verification
      description: 'Verify an on-chain payment transaction for the MPP adapter.


        The adapter submits the tx_id and network from the payer''s credential;

        the gateway looks up the resource definition to get the expected amount

        and receiver, then delegates to the facilitator for on-chain confirmation.


        Returns a receipt JWT on success.'
      operationId: mpp_verify_v1_verify_post
      parameters:
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MppVerifyRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MppVerifyResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /v1/ap2/verify:
    post:
      tags:
      - v1
      summary: AP2 mandate verification
      description: 'Verify an AP2 mandate credential submitted by a payer.


        The mandate dict must contain a ``signature`` field holding the JWT

        access token issued by POST /ap2/confirm.  The gateway verifies the

        JWT signature, checks that the tenant_id claim matches the authenticated

        tenant, and confirms the token has not expired.


        Returns ``{"verified": true}`` on success.'
      operationId: ap2_verify_v1_ap2_verify_post
      parameters:
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ap2VerifyRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ap2VerifyResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /v1/payouts:
    post:
      tags:
      - v1
      summary: Initiate on-chain payout
      description: 'Initiate an on-chain transfer from the tenant''s custodial balance.


        Idempotent on ``reference``: submitting the same reference twice returns

        the original payout_id + tx_id without re-broadcasting to the chain.


        Supported networks (MVP): algorand_mainnet, voi_mainnet (USDC / aUSDC).

        currency must be USD (USDC peg assumed 1:1).'
      operationId: create_payout_v1_payouts_post
      parameters:
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayoutCreate'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutCreateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /mpp/challenge:
    post:
      tags:
      - mpp
      summary: Mpp Challenge
      description: 'Explicit challenge pre-fetch for MPP agents that want to obtain a

        challenge token before building their payment transaction.


        Returns the same challenge object that GET /mpp/{resource_id} returns

        in its 401 body, allowing agents to pipeline challenge fetch → pay →

        proof submission without the round-trip to the resource endpoint.'
      operationId: mpp_challenge_mpp_challenge_post
      parameters:
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MppChallengeRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MppChallengeResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /mpp/probe:
    get:
      tags:
      - mpp
      - mpp
      summary: Mpp Probe
      description: 'Discovery probe + operator-level paid resource.


        No Authorization header → 402 + WWW-Authenticate: Payment challenge.

        Authorization: Payment <proof> → verify on-chain → 200 receipt.


        Payment goes to the AlgoVoi operator address (not a tenant). No DB

        session needed — facilitator verifies on-chain; receipt is logged.'
      operationId: mpp_probe_mpp_probe_delete
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              description: Optional payment proof or invocation parameters
              example: {}
        required: false
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '402':
          description: 'Payment Required — WWW-Authenticate: Payment'
      minPrice: 10000
      maxPrice: 10000
      inputSchema:
        type: object
        additionalProperties: true
      outputSchema:
        type: object
        properties:
          receipt:
            type: string
          resource_id:
            type: string
          tx_id:
            type: string
      x-payment-info:
        authMode: payment
        protocols:
        - x402
        - mpp
        price:
          mode: fixed
          amount: '10000'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
      x-discovery:
        resources:
        - url: https://api.algovoi.co.uk/mpp/probe
          description: MPP probe — canonical Tempo USDCe payment challenge
          network: tempo
          amount: '10000'
          asset: '0x20c000000000000000000000b9537d11c60e8b50'
    put:
      tags:
      - mpp
      - mpp
      summary: Mpp Probe
      description: 'Discovery probe + operator-level paid resource.


        No Authorization header → 402 + WWW-Authenticate: Payment challenge.

        Authorization: Payment <proof> → verify on-chain → 200 receipt.


        Payment goes to the AlgoVoi operator address (not a tenant). No DB

        session needed — facilitator verifies on-chain; receipt is logged.'
      operationId: mpp_probe_mpp_probe_delete
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              description: Optional payment proof or invocation parameters
              example: {}
        required: false
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '402':
          description: 'Payment Required — WWW-Authenticate: Payment'
      minPrice: 10000
      maxPrice: 10000
      inputSchema:
        type: object
        additionalProperties: true
      outputSchema:
        type: object
        properties:
          receipt:
            type: string
          resource_id:
            type: string
          tx_id:
            type: string
      x-payment-info:
        authMode: payment
        protocols:
        - x402
        - mpp
        price:
          mode: fixed
          amount: '10000'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
      x-discovery:
        resources:
        - url: https://api.algovoi.co.uk/mpp/probe
          description: MPP probe — canonical Tempo USDCe payment challenge
          network: tempo
          amount: '10000'
          asset: '0x20c000000000000000000000b9537d11c60e8b50'
    post:
      tags:
      - mpp
      - mpp
      summary: Mpp Probe
      description: 'Discovery probe + operator-level paid resource.


        No Authorization header → 402 + WWW-Authenticate: Payment challenge.

        Authorization: Payment <proof> → verify on-chain → 200 receipt.


        Payment goes to the AlgoVoi operator address (not a tenant). No DB

        session needed — facilitator verifies on-chain; receipt is logged.'
      operationId: mpp_probe_mpp_probe_delete
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              description: Optional payment proof or invocation parameters
              example: {}
        required: false
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '402':
          description: 'Payment Required — WWW-Authenticate: Payment'
      minPrice: 10000
      maxPrice: 10000
      inputSchema:
        type: object
        additionalProperties: true
      outputSchema:
        type: object
        properties:
          receipt:
            type: string
          resource_id:
            type: string
          tx_id:
            type: string
      x-payment-info:
        authMode: payment
        protocols:
        - x402
        - mpp
        price:
          mode: fixed
          amount: '10000'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
      x-discovery:
        resources:
        - url: https://api.algovoi.co.uk/mpp/probe
          description: MPP probe — canonical Tempo USDCe payment challenge
          network: tempo
          amount: '10000'
          asset: '0x20c000000000000000000000b9537d11c60e8b50'
    delete:
      tags:
      - mpp
      - mpp
      summary: Mpp Probe
      description: 'Discovery probe + operator-level paid resource.


        No Authorization header → 402 + WWW-Authenticate: Payment challenge.

        Authorization: Payment <proof> → verify on-chain → 200 receipt.


        Payment goes to the AlgoVoi operator address (not a tenant). No DB

        session needed — facilitator verifies on-chain; receipt is logged.'
      operationId: mpp_probe_mpp_probe_delete
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              description: Optional payment proof or invocation parameters
              example: {}
        required: false
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '402':
          description: 'Payment Required — WWW-Authenticate: Payment'
      minPrice: 10000
      maxPrice: 10000
      inputSchema:
        type: object
        additionalProperties: true
      outputSchema:
        type: object
        properties:
          receipt:
            type: string
          resource_id:
            type: string
          tx_id:
            type: string
      x-payment-info:
        authMode: payment
        protocols:
        - x402
        - mpp
        price:
          mode: fixed
          amount: '10000'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
      x-discovery:
        resources:
        - url: https://api.algovoi.co.uk/mpp/probe
          description: MPP probe — canonical Tempo USDCe payment challenge
          network: tempo
          amount: '10000'
          asset: '0x20c000000000000000000000b9537d11c60e8b50'
    options:
      tags:
      - mpp
      - mpp
      summary: Mpp Probe
      description: 'Discovery probe + operator-level paid resource.


        No Authorization header → 402 + WWW-Authenticate: Payment challenge.

        Authorization: Payment <proof> → verify on-chain → 200 receipt.


        Payment goes to the AlgoVoi operator address (not a tenant). No DB

        session needed — facilitator verifies on-chain; receipt is logged.'
      operationId: mpp_probe_mpp_probe_delete
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              description: Optional payment proof or invocation parameters
              example: {}
        required: false
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '402':
          description: 'Payment Required — WWW-Authenticate: Payment'
      minPrice: 10000
      maxPrice: 10000
      inputSchema:
        type: object
        additionalProperties: true
      outputSchema:
        type: object
        properties:
          receipt:
            type: string
          resource_id:
            type: string
          tx_id:
            type: string
      x-payment-info:
        authMode: payment
        protocols:
        - x402
        - mpp
        price:
          mode: fixed
          amount: '10000'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
      x-discovery:
        resources:
        - url: https://api.algovoi.co.uk/mpp/probe
          description: MPP probe — canonical Tempo USDCe payment challenge
          network: tempo
          amount: '10000'
          asset: '0x20c000000000000000000000b9537d11c60e8b50'
    head:
      tags:
      - mpp
      - mpp
      summary: Mpp Probe
      description: 'Discovery probe + operator-level paid resource.


        No Authorization header → 402 + WWW-Authenticate: Payment challenge.

        Authorization: Payment <proof> → verify on-chain → 200 receipt.


        Payment goes to the AlgoVoi operator address (not a tenant). No DB

        session needed — facilitator verifies on-chain; receipt is logged.'
      operationId: mpp_probe_mpp_probe_delete
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              description: Optional payment proof or invocation parameters
              example: {}
        required: false
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '402':
          description: 'Payment Required — WWW-Authenticate: Payment'
      minPrice: 10000
      maxPrice: 10000
      inputSchema:
        type: object
        additionalProperties: true
      outputSchema:
        type: object
        properties:
          receipt:
            type: string
          resource_id:
            type: string
          tx_id:
            type: string
      x-payment-info:
        authMode: payment
        protocols:
        - x402
        - mpp
        price:
          mode: fixed
          amount: '10000'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
      x-discovery:
        resources:
        - url: https://api.algovoi.co.uk/mpp/probe
          description: MPP probe — canonical Tempo USDCe payment challenge
          network: tempo
          amount: '10000'
          asset: '0x20c000000000000000000000b9537d11c60e8b50'
    patch:
      tags:
      - mpp
      - mpp
      summary: Mpp Probe
      description: 'Discovery probe + operator-level paid resource.


        No Authorization header → 402 + WWW-Authenticate: Payment challenge.

        Authorization: Payment <proof> → verify on-chain → 200 receipt.


        Payment goes to the AlgoVoi operator address (not a tenant). No DB

        session needed — facilitator verifies on-chain; receipt is logged.'
      operationId: mpp_probe_mpp_probe_delete
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: true
              type: object
              description: Optional payment proof or invocation parameters
              example: {}
        required: false
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '402':
          description: 'Payment Required — WWW-Authenticate: Payment'
      minPrice: 10000
      maxPrice: 10000
      inputSchema:
        type: object
        additionalProperties: true
      outputSchema:
        type: object
        properties:
          receipt:
            type: string
          resource_id:
            type: string
          tx_id:
            type: string
      x-payment-info:
        authMode: payment
        protocols:
        - x402
        - mpp
        price:
          mode: fixed
          amount: '10000'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
      x-discovery:
        resources:
        - url: https://api.algovoi.co.uk/mpp/probe
          description: MPP probe — canonical Tempo USDCe payment challenge
          network: tempo
          amount: '10000'
          asset: '0x20c000000000000000000000b9537d11c60e8b50'
  /mpp/{resource_id}:
    get:
      tags:
      - mpp
      summary: Mpp Resource
      description: 'IETF draft-httpauth-payment resource gate.


        No Authorization header → HTTP 401 + WWW-Authenticate: Payment challenge.

        Authorization: Payment <b64> → validate challenge echo → verify on-chain → HTTP 200.


        The x402 /protected/{resource_id} endpoint is completely unchanged.'
      operationId: mpp_resource_mpp__resource_id__get
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '402':
          description: Payment Required
      minPrice: 10000
      maxPrice: 10000
      x-payment-info:
        authMode: payment
        protocols:
        - mpp
        - x402
        price:
          mode: fixed
          amount: '10000'
          currency: '0x20c000000000000000000000b9537d11c60e8b50'
  /mpp/sub/{resource_id}:
    post:
      tags:
      - mpp
      - mpp
      summary: Mpp Subscription Resource
      description: 'MPP subscription gate (API key auth).


        No proof → 402 + intent="subscription" challenge with periodCount/periodUnit.

        Credential present → verify authority tx → create MppSubscription → return subscriptionId.'
      operationId: mpp_subscription_resource_mpp_sub__resource_id__post
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      - name: Idempotency-Key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Idempotency-Key
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '402':
          description: Payment Required — subscription challenge
      x-payment-info:
        authMode: payment
        protocols:
        - mpp
        intent: subscription
    get:
      tags:
      - mpp
      - mpp
      summary: Mpp Subscription Resource
      description: 'MPP subscription gate (API key auth).


        No proof → 402 + intent="subscription" challenge with periodCount/periodUnit.

        Credential present → verify authority tx → create MppSubscription → return subscriptionId.'
      operationId: mpp_subscription_resource_mpp_sub__resource_id__post
      parameters:
      - name: resource_id
        in: path
        required: true
        schema:
          type: string
          title: Resource Id
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      - name: Idempotency-Key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Idempotency-Key
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '402':
          description: Payment Required — subscription challenge
      x-payment-info:
        authMode: payment
        protocols:
        - mpp
        intent: subscription
  /ap2/intent:
    post:
      tags:
      - ap2
      summary: Submit an IntentMandate to open an AP2 shopping session
      description: 'Receive an IntentMandate. If user_authorization is present (SD-JWT-VC),

        verification is deferred to /pay where it binds to specific cart and

        payment hashes — at /intent stage we have nothing concrete to bind to.


        Per spec: if intent is not user-signed, user_cart_confirmation_required

        MUST be True (otherwise the agent could shop unilaterally without consent).'
      operationId: submit_intent_ap2_intent_post
      parameters:
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AP2IntentRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AP2IntentResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /ap2/cart:
    post:
      tags:
      - ap2
      summary: Submit a merchant-signed CartMandate, verified against an accepted IntentMandate
      operationId: submit_cart_ap2_cart_post
      parameters:
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AP2CartRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AP2CartResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-payment-info:
        authMode: api_key
  /ap2/pay:
    post:
      tags:
      - ap2
      summary: Submit PaymentMandate; verify user_authorization and return crypto challenge
      operationId: initiate_payment_ap2_pay_post
      parameters:
      - name: tenant_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: uuid
          - type: 'null'
          title: Tenant Id
      - name: x-tenant-id
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Tenant-Id
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AP2PayRequest'
      responses:
        

# --- truncated at 32 KB (236 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/algovoi-co-uk/refs/heads/main/openapi/algovoi-co-uk-gateway-openapi.yml