> ## Documentation Index
> Fetch the complete documentation index at: https://docs.phoneuse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Read a Proxy order and its settlement

> Requires a first-party interactive organization session with devices:read. Financial commands require an administrator and the configured checkout step-up policy. Network commands also require devices:act, current device authority and explicit consent. New purchase/connection commands require current admission. No credentials are returned. A deployment without the durable composition returns capability_unavailable (422). Renewal, order target/delivery edits, operation resume and event feeds are not available. Preserve command identity after an uncertain reply and read the original order or operation.

Hosted deployments only. A local checkout does not mount this route, so calling it there is a 404.



## OpenAPI

````yaml /api/openapi.json get /v1/proxy-orders/{orderId}
openapi: 3.1.0
info:
  title: Phonebase HTTP API
  version: 0.1.0
  summary: >-
    Every HTTP operation the control plane mounts, generated from the app's own
    route table.
  description: >-
    The control plane exposes two HTTP surfaces, and reading the boundary
    between them matters more than reading any single endpoint.


    The CONTROL surface is what your backend and your operators call. It takes a
    bearer token in the `Authorization` header, and two credential channels
    resolve to the same authorization context: an OAuth 2.1 access token for
    interactive clients, or an org scoped API key for headless ones.


    The DEVICE surface, under `/vrx/{runToken}/v1`, is what a worker calls while
    executing one run. Its credential is the run token in the url path, and it
    reads no `Authorization` header at all.


    Device control itself is not REST. An agent taps, swipes and reads the
    screen over the Model Context Protocol at `POST /mcp`, one tool call at a
    time. There is no `POST /v1/devices/{id}/tap`, and if you are looking for
    one, start with the tool reference instead.


    Operations marked `"x-phonebase-modes": ["hosted"]` exist only on a hosted
    deployment; a local checkout does not mount them.
servers:
  - url: '{origin}'
    description: Your control plane origin.
    variables:
      origin:
        default: https://mcp.phonebase.co
        enum:
          - https://mcp.phonebase.co
          - http://127.0.0.1:8788
        description: >-
          The hosted deployment serves the public origin its metadata document
          advertises, and that is the default here. Select the loopback entry
          instead when you are running a local checkout, which serves the port
          `PORT` names.
security: []
tags:
  - name: Apps
    description: Save immutable application builds and manage explicit device operations.
  - name: Managed Proxy
    description: >-
      Organization-owned fixed egress resources, independent one-time orders and
      verified network relationships.
  - name: Health
    description: Liveness, unauthenticated.
  - name: Gateway enrollment
    description: >-
      How a new gateway computer trades a one-time enrollment code for its
      tunnel credential. Unauthenticated: the code is the credential.
  - name: Gateway releases
    description: >-
      What a gateway computer installs: the current edge release of a channel.
      Called with the gateway's own credential.
  - name: MCP
    description: The JSON-RPC endpoint an agent drives devices through.
  - name: Copilot
    description: >-
      Drive a device by chatting. A signed in person's own conversations,
      streamed. Hosted deployments only.
  - name: Discovery
    description: Where to authenticate. Served on hosted deployments only.
  - name: Runs
    description: Start, watch and steer a run.
  - name: API keys
    description: Mint and revoke headless credentials. Hosted deployments only.
  - name: Device surface
    description: What a worker calls with its run token to observe and act.
  - name: Usage
    description: Read your org's own receipts and consumption. Hosted deployments only.
  - name: Devices
    description: Read the fleet your credential can see. Hosted deployments only.
  - name: Notifications
    description: >-
      What a person needs to know when they are not watching, and which emails
      they receive. Hosted deployments only.
  - name: Webhooks
    description: >-
      Subscribe your own system to what happens here, and read what was
      delivered. Hosted deployments only.
  - name: Provisioning
    description: >-
      Whether an organisation is provisioned, and how it becomes so. Hosted
      deployments only, and both operations answer a declared 503 on a
      deployment that cannot provision yet.
paths:
  /v1/proxy-orders/{orderId}:
    get:
      tags:
        - Managed Proxy
      summary: Read a Proxy order and its settlement
      description: >-
        Requires a first-party interactive organization session with
        devices:read. Financial commands require an administrator and the
        configured checkout step-up policy. Network commands also require
        devices:act, current device authority and explicit consent. New
        purchase/connection commands require current admission. No credentials
        are returned. A deployment without the durable composition returns
        capability_unavailable (422). Renewal, order target/delivery edits,
        operation resume and event feeds are not available. Preserve command
        identity after an uncertain reply and read the original order or
        operation.


        Hosted deployments only. A local checkout does not mount this route, so
        calling it there is a 404.
      operationId: getV1ProxyOrdersByOrderId
      parameters:
        - name: orderId
          in: path
          required: true
          description: Opaque organization-scoped identifier.
          schema:
            type: string
      responses:
        '200':
          description: Authorized current projection.
          headers:
            Cache-Control:
              description: Responses are never cached.
              schema:
                type: string
                const: no-store
            X-Request-Id:
              description: Sanitized request correlation.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedProxyOrderResponse'
        '400':
          description: >-
            Rejected or unavailable; inspect the structured error and retain
            original command identity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedProxyErrorResponse'
        '401':
          description: >-
            Rejected or unavailable; inspect the structured error and retain
            original command identity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedProxyErrorResponse'
        '403':
          description: >-
            Rejected or unavailable; inspect the structured error and retain
            original command identity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedProxyErrorResponse'
        '404':
          description: >-
            Rejected or unavailable; inspect the structured error and retain
            original command identity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedProxyErrorResponse'
        '409':
          description: >-
            Rejected or unavailable; inspect the structured error and retain
            original command identity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedProxyErrorResponse'
        '422':
          description: >-
            Rejected or unavailable; inspect the structured error and retain
            original command identity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedProxyErrorResponse'
        '429':
          description: >-
            Over the request budget for this caller. Hosted deployments only.
            Which budget applied depends on whether this request carried an
            `Authorization` header, not on which endpoint it was aimed at. Wait
            `Retry-After` seconds and retry the same request: the refusal
            happens before any work, so nothing was partially applied. See
            /api/rate-limits.
          headers:
            Retry-After:
              description: >-
                Whole seconds until one request is available again. Computed
                from the caller's own remaining allowance, not a fixed constant.
              schema:
                type: string
            RateLimit-Limit:
              description: >-
                The budget in effect for this caller class, in requests per
                minute.
              schema:
                type: string
            RateLimit-Remaining:
              description: >-
                Whole requests that were still available when this request was
                admitted. Zero on a 429.
              schema:
                type: string
            RateLimit-Reset:
              description: >-
                Seconds until the allowance is back to full. Longer than
                `Retry-After`, which is the wait for a single request.
              schema:
                type: string
            RateLimit-Policy:
              description: The budget and its window, as `<limit>;w=60`.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitedError'
        '503':
          description: >-
            Rejected or unavailable; inspect the structured error and retain
            original command identity.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ManagedProxyErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    ManagedProxyOrderResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/ManagedProxyOrder'
        snapshot:
          $ref: '#/components/schemas/ManagedProxySnapshot'
        request_id:
          $ref: '#/components/schemas/ManagedProxyId'
      required:
        - data
        - snapshot
        - request_id
      additionalProperties: false
      examples:
        - data:
            id: po_demo_1
            version: 2
            kind: purchase
            name: US egress 04
            quote_id: pq_demo_1
            proxy_id: null
            fulfilment_state: awaiting_payment
            attention: none
            payment_state: unknown
            refund_state: none
            delivery_mode: hold
            target_device_id: null
            duration_seconds: 2592000
            price:
              currency: USD
              subtotal_amount_minor: 1200
              tax_status: included
              tax_amount_minor: 0
              total_amount_minor: 1200
              price_reference: price_demo_fixed
              tax_behavior: inclusive
              configured_price_amount_minor: 1200
            sales_policy_version: policy_demo_1
            created_at: '2026-10-01T00:00:00Z'
            updated_at: '2026-10-01T00:00:00Z'
            fulfilment_deadline: '2026-10-01T00:15:00Z'
            renewal_decision_deadline: null
            delivery_mode_changed_at: null
            ready_at: null
            decision_at: null
            decision_reason: null
            previous_customer_end: null
            service_window: null
            checkout: null
            refund:
              state: none
              amount: null
              requested_at: null
              submitted_at: null
              succeeded_at: null
              next_update_at: null
            progress:
              original_promised_ready_at: '2026-10-01T00:10:00Z'
              latest_estimated_ready_at: null
              next_update_at: '2026-10-01T00:03:00Z'
              message: We are confirming the payment result. Do not pay again.
              action_required: null
            resource_versions: {}
            device_versions: {}
            allowed_actions:
              - action: checkout
                allowed: false
                reason_code: payment_unknown
                message: The original payment result must be confirmed.
              - action: cancel
                allowed: true
                reason_code: null
                message: null
            support_url: null
            settled_payment: null
          snapshot:
            freshness: fresh
            observed_at: '2026-10-01T00:00:00Z'
            served_at: '2026-10-01T00:00:00Z'
            message: null
          request_id: req_demo_0
        - data:
            id: po_demo_inclusive
            version: 3
            kind: purchase
            name: US egress 04
            quote_id: pq_demo_1
            proxy_id: null
            fulfilment_state: preparing
            attention: none
            payment_state: confirmed
            refund_state: none
            delivery_mode: hold
            target_device_id: null
            duration_seconds: 2592000
            price:
              currency: USD
              configured_price_amount_minor: 1200
              tax_behavior: inclusive
              subtotal_amount_minor: null
              tax_status: calculated_at_checkout
              tax_amount_minor: null
              total_amount_minor: 1200
              price_reference: price_demo_inclusive
            sales_policy_version: policy_demo_1
            created_at: '2026-10-01T00:00:00Z'
            updated_at: '2026-10-01T00:02:00Z'
            fulfilment_deadline: '2026-10-01T00:15:00Z'
            renewal_decision_deadline: null
            delivery_mode_changed_at: null
            ready_at: null
            decision_at: null
            decision_reason: null
            previous_customer_end: null
            service_window: null
            checkout: null
            refund:
              state: none
              amount: null
              requested_at: null
              submitted_at: null
              succeeded_at: null
              next_update_at: null
            progress:
              original_promised_ready_at: '2026-10-01T00:10:00Z'
              latest_estimated_ready_at: null
              next_update_at: '2026-10-01T00:03:00Z'
              message: >-
                Payment is confirmed. The full service period starts only when
                delivery is ready.
              action_required: null
            resource_versions: {}
            device_versions: {}
            allowed_actions:
              - action: cancel
                allowed: true
                reason_code: null
                message: null
            support_url: null
            settled_payment:
              currency: USD
              tax_behavior: inclusive
              subtotal_minor: 1000
              tax_amount_minor: 200
              total_amount_minor: 1200
              paid_at: '2026-10-01T00:02:00Z'
              receipt_url: https://payments.example.invalid/receipts/inclusive
          snapshot:
            freshness: fresh
            observed_at: '2026-10-01T00:00:00Z'
            served_at: '2026-10-01T00:00:00Z'
            message: null
          request_id: req_demo_1
        - data:
            id: po_demo_exclusive
            version: 3
            kind: purchase
            name: US egress 04
            quote_id: pq_demo_1
            proxy_id: null
            fulfilment_state: preparing
            attention: none
            payment_state: confirmed
            refund_state: none
            delivery_mode: hold
            target_device_id: null
            duration_seconds: 2592000
            price:
              currency: USD
              configured_price_amount_minor: 1200
              tax_behavior: exclusive
              subtotal_amount_minor: 1200
              tax_status: calculated_at_checkout
              tax_amount_minor: null
              total_amount_minor: null
              price_reference: price_demo_exclusive
            sales_policy_version: policy_demo_1
            created_at: '2026-10-01T00:00:00Z'
            updated_at: '2026-10-01T00:02:00Z'
            fulfilment_deadline: '2026-10-01T00:15:00Z'
            renewal_decision_deadline: null
            delivery_mode_changed_at: null
            ready_at: null
            decision_at: null
            decision_reason: null
            previous_customer_end: null
            service_window: null
            checkout: null
            refund:
              state: none
              amount: null
              requested_at: null
              submitted_at: null
              succeeded_at: null
              next_update_at: null
            progress:
              original_promised_ready_at: '2026-10-01T00:10:00Z'
              latest_estimated_ready_at: null
              next_update_at: '2026-10-01T00:03:00Z'
              message: >-
                Payment is confirmed. The full service period starts only when
                delivery is ready.
              action_required: null
            resource_versions: {}
            device_versions: {}
            allowed_actions:
              - action: cancel
                allowed: true
                reason_code: null
                message: null
            support_url: null
            settled_payment:
              currency: USD
              tax_behavior: exclusive
              subtotal_minor: 1200
              tax_amount_minor: 200
              total_amount_minor: 1400
              paid_at: '2026-10-01T00:02:00Z'
              receipt_url: https://payments.example.invalid/receipts/exclusive
          snapshot:
            freshness: fresh
            observed_at: '2026-10-01T00:00:00Z'
            served_at: '2026-10-01T00:00:00Z'
            message: null
          request_id: req_demo_2
    ManagedProxyErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Stable snake_case code.
              pattern: ^[a-z][a-z0-9_]*$
            message:
              type: string
              description: English, without credentials or raw vendor errors.
            request_id:
              $ref: '#/components/schemas/ManagedProxyId'
            details:
              $ref: '#/components/schemas/ManagedProxyErrorDetails'
            retryable:
              type: boolean
              description: Compatibility with existing reverification_required envelope.
            maxAgeMinutes:
              type: integer
              minimum: 1
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      examples:
        - error:
            code: version_conflict
            message: >-
              The device or resource changed. Refresh its status before
              confirming again.
            request_id: req_demo_2
            details:
              retryable: false
              recovery_action: refresh_and_confirm
              resource_versions:
                px_demo_1: 8
              device_versions:
                dev_demo_a: 13
                dev_demo_b: 4
        - error:
            code: reverification_required
            message: Verify again and retry.
            retryable: true
            maxAgeMinutes: 10
    RateLimitedError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              const: rate_limited
              description: Always `rate_limited` on this response.
            message:
              type: string
              description: >-
                A human readable summary. The numbers are in the headers, not in
                here.
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false
      description: >-
        Over the request budget. Raised by the rate limiter before any handler
        runs, which is why its code is not one of the action codes: nothing was
        attempted, so no action failed.
    ManagedProxyOrder:
      type: object
      description: >-
        Fulfilment, payment, refund and attention are separate axes. A browser
        return is not payment proof; receipt is not readiness.
      properties:
        id:
          $ref: '#/components/schemas/ManagedProxyId'
        version:
          $ref: '#/components/schemas/ManagedProxyVersion'
        kind:
          $ref: '#/components/schemas/ManagedProxyOrderKind'
        name:
          $ref: '#/components/schemas/ManagedProxyResourceName'
        quote_id:
          $ref: '#/components/schemas/ManagedProxyId'
        proxy_id:
          anyOf:
            - $ref: '#/components/schemas/ManagedProxyId'
            - type: 'null'
        fulfilment_state:
          $ref: '#/components/schemas/ManagedProxyFulfilmentState'
        attention:
          $ref: '#/components/schemas/ManagedProxyAttention'
        payment_state:
          $ref: '#/components/schemas/ManagedProxyPaymentState'
        refund_state:
          $ref: '#/components/schemas/ManagedProxyRefundState'
        delivery_mode:
          $ref: '#/components/schemas/ManagedProxyDeliveryMode'
        target_device_id:
          anyOf:
            - $ref: '#/components/schemas/ManagedProxyId'
            - type: 'null'
        duration_seconds:
          type: integer
          minimum: 1
        price:
          $ref: '#/components/schemas/ManagedProxyPriceBreakdown'
        sales_policy_version:
          $ref: '#/components/schemas/ManagedProxyId'
        created_at:
          $ref: '#/components/schemas/ManagedProxyTimestamp'
        updated_at:
          $ref: '#/components/schemas/ManagedProxyTimestamp'
        fulfilment_deadline:
          $ref: '#/components/schemas/ManagedProxyTimestamp'
        renewal_decision_deadline:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        delivery_mode_changed_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        ready_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        decision_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        decision_reason:
          anyOf:
            - type: string
            - type: 'null'
        previous_customer_end:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        service_window:
          anyOf:
            - $ref: '#/components/schemas/ManagedProxyServiceWindow'
            - type: 'null'
        checkout:
          anyOf:
            - $ref: '#/components/schemas/ManagedProxyCheckoutSession'
            - type: 'null'
        refund:
          $ref: '#/components/schemas/ManagedProxyRefundSummary'
        progress:
          $ref: '#/components/schemas/ManagedProxyProgress'
        resource_versions:
          $ref: '#/components/schemas/ManagedProxyVersionMap'
        device_versions:
          $ref: '#/components/schemas/ManagedProxyVersionMap'
        allowed_actions:
          type: array
          items:
            $ref: '#/components/schemas/ManagedProxyActionEligibility'
        support_url:
          anyOf:
            - type: string
              description: >-
                Only an existing authorized PhoneBase support route; null
                otherwise.
            - type: 'null'
        settled_payment:
          anyOf:
            - $ref: '#/components/schemas/ManagedProxySettledPayment'
            - type: 'null'
        expiry_disclosure:
          oneOf:
            - $ref: '#/components/schemas/ManagedProxyExpiryDisclosure'
            - type: 'null'
          description: >-
            Exact disclosed terms; null on historical records without captured
            commercial terms.
      required:
        - id
        - version
        - kind
        - name
        - quote_id
        - proxy_id
        - fulfilment_state
        - attention
        - payment_state
        - refund_state
        - delivery_mode
        - target_device_id
        - duration_seconds
        - price
        - sales_policy_version
        - created_at
        - updated_at
        - fulfilment_deadline
        - renewal_decision_deadline
        - delivery_mode_changed_at
        - ready_at
        - decision_at
        - decision_reason
        - previous_customer_end
        - service_window
        - checkout
        - refund
        - progress
        - resource_versions
        - device_versions
        - allowed_actions
        - support_url
        - settled_payment
        - expiry_disclosure
      additionalProperties: false
      examples:
        - id: po_demo_1
          version: 2
          kind: purchase
          name: US egress 04
          quote_id: pq_demo_1
          proxy_id: null
          fulfilment_state: awaiting_payment
          attention: none
          payment_state: unknown
          refund_state: none
          delivery_mode: hold
          target_device_id: null
          duration_seconds: 2592000
          price:
            currency: USD
            subtotal_amount_minor: 1200
            tax_status: included
            tax_amount_minor: 0
            total_amount_minor: 1200
            price_reference: price_demo_fixed
            tax_behavior: inclusive
            configured_price_amount_minor: 1200
          sales_policy_version: policy_demo_1
          created_at: '2026-10-01T00:00:00Z'
          updated_at: '2026-10-01T00:00:00Z'
          fulfilment_deadline: '2026-10-01T00:15:00Z'
          renewal_decision_deadline: null
          delivery_mode_changed_at: null
          ready_at: null
          decision_at: null
          decision_reason: null
          previous_customer_end: null
          service_window: null
          checkout: null
          refund:
            state: none
            amount: null
            requested_at: null
            submitted_at: null
            succeeded_at: null
            next_update_at: null
          progress:
            original_promised_ready_at: '2026-10-01T00:10:00Z'
            latest_estimated_ready_at: null
            next_update_at: '2026-10-01T00:03:00Z'
            message: We are confirming the payment result. Do not pay again.
            action_required: null
          resource_versions: {}
          device_versions: {}
          allowed_actions:
            - action: checkout
              allowed: false
              reason_code: payment_unknown
              message: The original payment result must be confirmed.
            - action: cancel
              allowed: true
              reason_code: null
              message: null
          support_url: null
          settled_payment: null
          expiry_disclosure: null
        - id: po_demo_inclusive
          version: 3
          kind: purchase
          name: US egress 04
          quote_id: pq_demo_1
          proxy_id: null
          fulfilment_state: preparing
          attention: none
          payment_state: confirmed
          refund_state: none
          delivery_mode: hold
          target_device_id: null
          duration_seconds: 2592000
          price:
            currency: USD
            configured_price_amount_minor: 1200
            tax_behavior: inclusive
            subtotal_amount_minor: null
            tax_status: calculated_at_checkout
            tax_amount_minor: null
            total_amount_minor: 1200
            price_reference: price_demo_inclusive
          sales_policy_version: policy_demo_1
          created_at: '2026-10-01T00:00:00Z'
          updated_at: '2026-10-01T00:02:00Z'
          fulfilment_deadline: '2026-10-01T00:15:00Z'
          renewal_decision_deadline: null
          delivery_mode_changed_at: null
          ready_at: null
          decision_at: null
          decision_reason: null
          previous_customer_end: null
          service_window: null
          checkout: null
          refund:
            state: none
            amount: null
            requested_at: null
            submitted_at: null
            succeeded_at: null
            next_update_at: null
          progress:
            original_promised_ready_at: '2026-10-01T00:10:00Z'
            latest_estimated_ready_at: null
            next_update_at: '2026-10-01T00:03:00Z'
            message: >-
              Payment is confirmed. The full service period starts only when
              delivery is ready.
            action_required: null
          resource_versions: {}
          device_versions: {}
          allowed_actions:
            - action: cancel
              allowed: true
              reason_code: null
              message: null
          support_url: null
          settled_payment:
            currency: USD
            tax_behavior: inclusive
            subtotal_minor: 1000
            tax_amount_minor: 200
            total_amount_minor: 1200
            paid_at: '2026-10-01T00:02:00Z'
            receipt_url: https://payments.example.invalid/receipts/inclusive
          expiry_disclosure: null
        - id: po_demo_exclusive
          version: 3
          kind: purchase
          name: US egress 04
          quote_id: pq_demo_1
          proxy_id: null
          fulfilment_state: preparing
          attention: none
          payment_state: confirmed
          refund_state: none
          delivery_mode: hold
          target_device_id: null
          duration_seconds: 2592000
          price:
            currency: USD
            configured_price_amount_minor: 1200
            tax_behavior: exclusive
            subtotal_amount_minor: 1200
            tax_status: calculated_at_checkout
            tax_amount_minor: null
            total_amount_minor: null
            price_reference: price_demo_exclusive
          sales_policy_version: policy_demo_1
          created_at: '2026-10-01T00:00:00Z'
          updated_at: '2026-10-01T00:02:00Z'
          fulfilment_deadline: '2026-10-01T00:15:00Z'
          renewal_decision_deadline: null
          delivery_mode_changed_at: null
          ready_at: null
          decision_at: null
          decision_reason: null
          previous_customer_end: null
          service_window: null
          checkout: null
          refund:
            state: none
            amount: null
            requested_at: null
            submitted_at: null
            succeeded_at: null
            next_update_at: null
          progress:
            original_promised_ready_at: '2026-10-01T00:10:00Z'
            latest_estimated_ready_at: null
            next_update_at: '2026-10-01T00:03:00Z'
            message: >-
              Payment is confirmed. The full service period starts only when
              delivery is ready.
            action_required: null
          resource_versions: {}
          device_versions: {}
          allowed_actions:
            - action: cancel
              allowed: true
              reason_code: null
              message: null
          support_url: null
          settled_payment:
            currency: USD
            tax_behavior: exclusive
            subtotal_minor: 1200
            tax_amount_minor: 200
            total_amount_minor: 1400
            paid_at: '2026-10-01T00:02:00Z'
            receipt_url: https://payments.example.invalid/receipts/exclusive
          expiry_disclosure: null
    ManagedProxySnapshot:
      type: object
      properties:
        freshness:
          $ref: '#/components/schemas/ManagedProxyFreshness'
        observed_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        served_at:
          $ref: '#/components/schemas/ManagedProxyTimestamp'
        message:
          anyOf:
            - type: string
            - type: 'null'
      required:
        - freshness
        - observed_at
        - served_at
        - message
      additionalProperties: false
    ManagedProxyId:
      type: string
      description: Opaque organization-bound identifier.
      minLength: 1
      maxLength: 128
      pattern: ^[A-Za-z0-9][A-Za-z0-9_-]*$
    ManagedProxyErrorDetails:
      type: object
      properties:
        retryable:
          type: boolean
        recovery_action:
          type: string
        resource_versions:
          $ref: '#/components/schemas/ManagedProxyVersionMap'
        device_versions:
          $ref: '#/components/schemas/ManagedProxyVersionMap'
        order_id:
          $ref: '#/components/schemas/ManagedProxyId'
        operation_id:
          $ref: '#/components/schemas/ManagedProxyId'
      required: []
      additionalProperties: false
    ManagedProxyVersion:
      type: integer
      minimum: 1
    ManagedProxyOrderKind:
      type: string
      enum:
        - purchase
        - renewal
    ManagedProxyResourceName:
      type: string
      description: Trimmed; 1, 80 Unicode code points; no control characters.
      minLength: 1
      maxLength: 80
      pattern: ^[^\u0000-\u001F\u007F]+$
    ManagedProxyFulfilmentState:
      type: string
      enum:
        - awaiting_payment
        - preparing
        - ready
        - cancelled
        - failed
    ManagedProxyAttention:
      type: string
      enum:
        - none
        - delayed
        - action_required
    ManagedProxyPaymentState:
      type: string
      enum:
        - pending
        - confirmed
        - failed
        - unknown
    ManagedProxyRefundState:
      type: string
      enum:
        - none
        - pending
        - submitted
        - succeeded
        - failed
    ManagedProxyDeliveryMode:
      type: string
      enum:
        - hold
        - bind_now
    ManagedProxyPriceBreakdown:
      type: object
      description: >-
        Configured Price amount, tax behavior and known net/tax/total are
        distinct. Unknown calculated values are null. No inferred zero,
        discounts or extra fees.
      properties:
        currency:
          type: string
          pattern: ^[A-Z]{3}$
        subtotal_amount_minor:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          description: >-
            Pre-tax net subtotal when known. Inclusive-price tax calculated
            later can leave this null.
        tax_status:
          type: string
          enum:
            - included
            - calculated
            - calculated_at_checkout
        tax_amount_minor:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
        total_amount_minor:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
        price_reference:
          $ref: '#/components/schemas/ManagedProxyId'
        configured_price_amount_minor:
          type: integer
          minimum: 0
          description: >-
            Configured Price amount: gross for inclusive tax, net for exclusive
            tax.
        tax_behavior:
          type: string
          enum:
            - inclusive
            - exclusive
      required:
        - currency
        - subtotal_amount_minor
        - tax_status
        - tax_amount_minor
        - total_amount_minor
        - price_reference
        - configured_price_amount_minor
        - tax_behavior
      additionalProperties: false
    ManagedProxyTimestamp:
      type: string
      format: date-time
      pattern: Z$
      description: RFC3339 UTC; UI displays an explicit local timezone.
    ManagedProxyNullableTimestamp:
      anyOf:
        - $ref: '#/components/schemas/ManagedProxyTimestamp'
        - type: 'null'
    ManagedProxyServiceWindow:
      type: object
      description: Duration is integer seconds; ends_at must be after starts_at.
      properties:
        starts_at:
          $ref: '#/components/schemas/ManagedProxyTimestamp'
        ends_at:
          $ref: '#/components/schemas/ManagedProxyTimestamp'
        duration_seconds:
          type: integer
          minimum: 1
      required:
        - starts_at
        - ends_at
        - duration_seconds
      additionalProperties: false
    ManagedProxyCheckoutSession:
      type: object
      properties:
        url:
          type: string
          format: uri
          description: >-
            Known open configured-gateway URL. Dummy examples use
            example.invalid; never log signed URLs.
        expires_at:
          $ref: '#/components/schemas/ManagedProxyTimestamp'
      required:
        - url
        - expires_at
      additionalProperties: false
    ManagedProxyRefundSummary:
      type: object
      properties:
        state:
          $ref: '#/components/schemas/ManagedProxyRefundState'
        amount:
          anyOf:
            - $ref: '#/components/schemas/ManagedProxyMoney'
            - type: 'null'
        requested_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        submitted_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        succeeded_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        next_update_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
      required:
        - state
        - amount
        - requested_at
        - submitted_at
        - succeeded_at
        - next_update_at
      additionalProperties: false
    ManagedProxyProgress:
      type: object
      description: >-
        Terminal fulfilment has no future delivery estimate; original promise
        remains historical. Refund updates may continue.
      properties:
        original_promised_ready_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        latest_estimated_ready_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        next_update_at:
          $ref: '#/components/schemas/ManagedProxyNullableTimestamp'
        message:
          type: string
          description: Customer-safe English description of known facts and impact.
        action_required:
          anyOf:
            - type: string
              description: Specific user action; null when none.
            - type: 'null'
      required:
        - original_promised_ready_at
        - latest_estimated_ready_at
        - next_update_at
        - message
        - action_required
      additionalProperties: false
    ManagedProxyVersionMap:
      type: object
      maxProperties: 16
      propertyNames:
        $ref: '#/components/schemas/ManagedProxyId'
      additionalProperties:
        $ref: '#/components/schemas/ManagedProxyVersion'
      description: >-
        Exact affected customer resource/device IDs and authoritative versions.
        Server validates completeness; hidden stock is guarded internally.
    ManagedProxyActionEligibility:
      type: object
      properties:
        action:
          type: string
          enum:
            - create_quote
            - create_order
            - checkout
            - cancel
            - change_delivery_mode
            - change_target_device
            - bind
            - unbind
            - transfer
            - replace
            - renew
            - rename
            - archive
            - resume
            - view_support
        allowed:
          type: boolean
        reason_code:
          anyOf:
            - type: string
            - type: 'null'
        message:
          anyOf:
            - type: string
              description: English reason.
            - type: 'null'
      required:
        - action
        - allowed
        - reason_code
        - message
      additionalProperties: false
    ManagedProxySettledPayment:
      type: object
      description: >-
        Gateway-confirmed final payment, separate from immutable quote. Actual
        funds may be known while contractual amount matching still requires
        recovery. No client-supplied amount is trusted. subtotal_minor is always
        pre-tax net; net+tax=total. Inclusive configured Price matches paid
        gross total; exclusive configured Price matches net. Supported tax
        composition and customer acceptance require gateway evidence.
      properties:
        currency:
          type: string
          pattern: ^[A-Z]{3}$
        subtotal_minor:
          type: integer
          minimum: 0
        tax_amount_minor:
          type: integer
          minimum: 0
        total_amount_minor:
          type: integer
          minimum: 0
        paid_at:
          $ref: '#/components/schemas/ManagedProxyTimestamp'
        receipt_url:
          anyOf:
            - type: string
              format: uri
              description: >-
                Authorized trusted-gateway receipt URL; never a caller-provided
                redirect.
            - type: 'null'
        tax_behavior:
          type: string
          enum:
            - inclusive
            - exclusive
      required:
        - currency
        - subtotal_minor
        - tax_amount_minor
        - total_amount_minor
        - paid_at
        - receipt_url
        - tax_behavior
      additionalProperties: false
    ManagedProxyExpiryDisclosure:
      type: object
      description: >-
        Original commercial expiry terms. They do not establish device
        capability or authorize a network change.
      properties:
        version:
          type: string
          minLength: 1
          maxLength: 128
          pattern: ^[A-Za-z0-9][A-Za-z0-9_-]*$
        strategy:
          type: string
          const: restore_default_network
        text:
          type: string
          minLength: 1
          maxLength: 2000
        digest:
          type: string
          pattern: ^[a-f0-9]{64}$
      required:
        - version
        - strategy
        - text
        - digest
      additionalProperties: false
    ManagedProxyFreshness:
      type: string
      enum:
        - fresh
        - stale
        - unavailable
    ManagedProxyMoney:
      type: object
      properties:
        currency:
          type: string
          description: ISO 4217 code from configured Price.
          pattern: ^[A-Z]{3}$
        amount_minor:
          type: integer
          minimum: 0
      required:
        - currency
        - amount_minor
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        The control surface credential. Send `Authorization: Bearer <token>`.


        Two kinds of token are accepted and they are told apart by shape, not by
        a separate header. A token beginning `pbk_` is an org scoped API key,
        whose public half and secret half are generated together and of which
        only a hash of the secret is ever stored; anything else is treated as an
        OAuth 2.1 access token and verified against the authorization server's
        keys.


        Both resolve to the same context: an org, a principal and a set of
        scopes. Nothing downstream branches on which channel you used, with one
        deliberate exception, key management, which requires a signed-in person
        so that a key can never mint another key.


        Scopes are enforced when MCP tools are REGISTERED rather than when they
        are called, so a tool your credential cannot use is absent from
        `tools/list` rather than refused mid gesture.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.