{
  "openapi" : "3.1.0",
  "info" : {
    "title" : "Ziklag ChainOS API",
    "description" : "Non-custodial multi-chain infrastructure across Bitcoin, Ethereum, BNB Smart Chain, Polygon, Avalanche, Base, TRON, Solana, XRP and Stellar.\n\nThe Edge exposes this surface locally and Cloud exposes the same surface, so an integration can be pointed at either without a code change. Base URLs: `http://localhost:8787` for the Edge, `https://api.chainos.cloud` for Cloud — every path below already carries its `/v1` prefix, so the base URL does not repeat it.\n\nZiklag can derive receive addresses from stored extended public keys, observe on-chain activity for those addresses, build unsigned transactions and broadcast transactions the customer's Edge has already signed. Ziklag cannot derive any private key, sign any transaction, move any funds, or reconstruct the mnemonic — a property of secp256k1 and BIP-32, not a policy commitment. On the two Ed25519 chains, Solana and Stellar, Cloud holds no key material of any kind: no extended public key exists, so it stores only the addresses the customer's Edge derived and sent.",
    "contact" : {
      "name" : "Ziklag Software Services",
      "url" : "http://localhost:8080"
    },
    "license" : {
      "name" : "Proprietary"
    },
    "version" : "2.0.0",
    "x-logo" : {
      "url" : "https://docs.chainos.cloud/brand/logo-chainos-lockup-onDark.png",
      "altText" : "Ziklag ChainOS",
      "href" : "https://docs.chainos.cloud/"
    }
  },
  "servers" : [ {
    "url" : "https://api.chainos.cloud",
    "description" : "Cloud"
  }, {
    "url" : "http://localhost:8787",
    "description" : "Edge (local)"
  } ],
  "security" : [ {
    "ApiKeyAuth" : [ ]
  }, {
    "BearerAuth" : [ ]
  } ],
  "tags" : [ {
    "name" : "Edge",
    "description" : "Sync, heartbeat, leader lease and readiness. Called by the Edge container, never by the fintech's application."
  }, {
    "name" : "Migration",
    "description" : "Bringing an existing book of addresses onto ChainOS."
  }, {
    "name" : "Webhooks",
    "description" : "Event subscriptions, delivery history and replay."
  }, {
    "name" : "Authentication",
    "description" : "Portal sessions. Not used by the Edge or the API."
  }, {
    "name" : "Settings",
    "description" : "Portal-only. Requires a bearer token, not an API key."
  }, {
    "name" : "Sandbox",
    "description" : "Exercising the full path without touching a chain."
  }, {
    "name" : "Organizations",
    "description" : "Organizations, members and invitations"
  }, {
    "name" : "Transactions",
    "description" : "Deposits, withdrawals and confirmation state."
  }, {
    "name" : "Balances",
    "description" : "Native and token balances, and fee estimates."
  }, {
    "name" : "Billing",
    "description" : "Capacity bands, capability tiers and usage."
  }, {
    "name" : "Addresses",
    "description" : "Issuance, monitoring and asset opt-in."
  }, {
    "name" : "Payments",
    "description" : "Checkout sessions — one address, one amount, one countdown."
  }, {
    "name" : "Treasury",
    "description" : "The token catalogue and the cross-chain route matrix."
  }, {
    "name" : "Addresses",
    "description" : "Deposit address issuance and lifecycle."
  }, {
    "name" : "Sandbox",
    "description" : "Simulated chain activity. Free, unmetered, never real."
  }, {
    "name" : "Checkout",
    "description" : "The payer's endpoints. Called by the hosted checkout and by the embeddable component — not from a merchant's server."
  }, {
    "name" : "Edge settings",
    "description" : "Local API keys, identity rotations, destructive wipe."
  } ],
  "paths" : {
    "/v1/webhooks/{webhookId}" : {
      "get" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Fetch one webhook",
        "description" : "The secret is never included, only its preview.",
        "operationId" : "get",
        "parameters" : [ {
          "name" : "webhookId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeWebhookView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Replace a webhook's configuration",
        "operationId" : "update",
        "parameters" : [ {
          "name" : "webhookId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WebhookRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeWebhookView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Deactivate a webhook",
        "description" : "Delivery stops immediately; the delivery history is retained.",
        "operationId" : "delete",
        "parameters" : [ {
          "name" : "webhookId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/sweeps/policies/{policyId}" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "One sweep policy",
        "description" : "`pausedAt` and `pausedReason` are the fields to read when sweeps have stopped: a policy pauses itself after `pauseOnConsecutiveFailures` failed cycles, and stays paused until somebody resumes it.",
        "operationId" : "get_1",
        "parameters" : [ {
          "name" : "policyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Treasury" ],
        "summary" : "Update a sweep policy",
        "description" : "The chain and the token are fixed at creation — changing either would silently repoint a policy's whole history at a different asset. Create another policy instead.",
        "operationId" : "update_1",
        "parameters" : [ {
          "name" : "policyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PolicyBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Treasury" ],
        "summary" : "Delete a sweep policy",
        "description" : "Refused while a job is running. Job history is kept — it is the record of funds that moved.",
        "operationId" : "delete_1",
        "parameters" : [ {
          "name" : "policyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK"
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/pipelines/{pipelineId}" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "One pipeline",
        "operationId" : "get_2",
        "parameters" : [ {
          "name" : "pipelineId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePipelineView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Treasury" ],
        "summary" : "Update a pipeline",
        "description" : "The token and destination chain are fixed at creation. Sources are replaced wholesale when `sweepPolicyIds` is supplied, and each one's route to the destination is re-checked as it is added.",
        "operationId" : "update_2",
        "parameters" : [ {
          "name" : "pipelineId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PipelineBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePipelineView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Treasury" ],
        "summary" : "Delete a pipeline",
        "description" : "The sweep and bridge policies outlive it. A pipeline is a name over them, and deleting the name must not stop sweeps you still want.",
        "operationId" : "delete_2",
        "parameters" : [ {
          "name" : "pipelineId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK"
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/bridges/policies/{policyId}" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "One bridge policy",
        "operationId" : "policy",
        "parameters" : [ {
          "name" : "policyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Treasury" ],
        "summary" : "Update a bridge policy",
        "description" : "The token and the destination chain are fixed at creation — changing either would repoint a policy's whole history at a different asset or a different chain.",
        "operationId" : "updatePolicy",
        "parameters" : [ {
          "name" : "policyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PolicyBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Treasury" ],
        "summary" : "Delete a bridge policy",
        "description" : "Transfers it caused are kept — they are the record of funds that moved, and they outlive the configuration that started them.",
        "operationId" : "deletePolicy",
        "parameters" : [ {
          "name" : "policyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK"
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{accountId}/security/two-factor" : {
      "get" : {
        "tags" : [ "Organizations" ],
        "summary" : "Read this organization's second-factor policy",
        "operationId" : "twoFactor",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTwoFactorView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Organizations" ],
        "summary" : "Require, or stop requiring, a second factor for this organization's members",
        "operationId" : "updateTwoFactor",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TwoFactorView"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTwoFactorView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/uploads/{uploadId}/content" : {
      "put" : {
        "tags" : [ "Migration" ],
        "summary" : "Upload an address file's bytes",
        "description" : "PUT the file here when `uploadUrl` pointed at this API. The body is the file itself, not a form field.\n\nSend it in one request. There is no resume: an interrupted upload is discarded rather than kept, because a file that stops half way parses perfectly up to the cut and reports a smaller book — which is the worst failure available here, since it is silent until a deposit arrives at an address nobody imported.",
        "operationId" : "putContent",
        "parameters" : [ {
          "name" : "uploadId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks" : {
      "get" : {
        "tags" : [ "Webhooks" ],
        "summary" : "List webhooks",
        "operationId" : "list",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedWebhookView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Create a webhook",
        "description" : "The signing secret is returned once and never again.\n\n`deliveryMode: edge` (the default) routes Cloud → Edge → your local endpoint, so your application needs no public ingress. `direct` posts to a public HTTPS endpoint instead.\n\nVerify `X-Webhook-Signature` against the raw request body — not a re-serialised object. That is the single most common integration mistake and it fails intermittently.",
        "operationId" : "create",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WebhookRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Created; secret returned once",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeCreatedWebhook"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — non-https URL, or one resolving to an internal address",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeCreatedWebhook"
                }
              }
            }
          },
          "403" : {
            "description" : "TIER_FEATURE_LOCKED — the tier's webhook limit is reached",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeCreatedWebhook"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks/deliveries/{deliveryId}/replay" : {
      "post" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Replay a dead-lettered delivery",
        "description" : "Restarts the retry ladder at attempt one with the original payload, so the signature your endpoint verifies is unchanged.",
        "operationId" : "replay",
        "parameters" : [ {
          "name" : "deliveryId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/wallets" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Treasury wallets",
        "description" : "Without balances — reading a balance is a chain call per token, and listing twenty wallets should not make a hundred of them. Use `/wallets/{id}/balances` for the one being looked at.",
        "operationId" : "list_1",
        "parameters" : [ {
          "name" : "chain",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedWalletView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Create a treasury wallet",
        "description" : "Where swept funds go. ChainOS never spends from one — it builds no transaction whose sender is a treasury wallet — so this is a destination and a monitoring target, not an account ChainOS controls.\n\n`source: derived` takes no address. ChainOS derives it from your account's extended public key at the reserved change path `m/…/1/1`, which means your Edge can already sign for it whenever you choose to move the funds yourself, and means there is no address in this request body for anybody to change. If you send an `address` as well it is checked against what ChainOS derives and a mismatch is refused rather than resolved — a disagreement about a derivation is the most serious kind of bug in this product, and the destination of every swept balance is the worst place to have one.\n\n**Solana and Stellar cannot be derived.** Ed25519 admits no public-key-only child derivation, so no extended public key exists for them and ChainOS has nothing to derive from. Nominate an external address on those two chains.\n\n`source: external` takes the address you nominate — an exchange deposit address, your own cold storage — validated for that chain's format and nothing more.\n\nCreating the same wallet twice returns the existing one rather than failing. It is the obvious first action on this screen.",
        "operationId" : "create_1",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateWallet"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Wallet registered",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeWalletView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — a derived wallet on a chain that cannot derive one, an address that disagrees with the derivation, or an external wallet with no address. INVALID_ADDRESS — the address is not valid for that chain.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeWalletView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/token-requests" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Token requests made by this account",
        "description" : "Each carries the state it is in and, where it was declined, the reason. `monitored` is the field that matters: it is false until the token is published, and deposits are not credited before then.",
        "operationId" : "mine",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Ask for a token to be supported",
        "description" : "Records a request for a contract ChainOS does not currently credit, and puts it in front of an administrator.\n\n**It does not begin monitoring.** Deposits of the token are not detected and not credited while the request is under review, and sending funds to an address expecting them to appear will not work. A contract nobody has checked against the chain is how a worthless token gets credited as though it were USDT, so the only way into the catalogue is the same review every other token goes through: the contract is read on-chain, its `decimals` is compared with what was declared here, and a second administrator approves the publication.\n\n`symbol` and `decimals` are what you believe the token to be. They are recorded as your claim and checked against the contract — a mismatch is what the review exists to catch, so state them as you have them rather than as you think they should be.\n\nPosting the same contract twice is a no-op: one account counts once.",
        "operationId" : "request",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TokenRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Request recorded",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — malformed symbol or decimals, or too many requests already awaiting review",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "409" : {
            "description" : "CONFLICT — the contract is already in the catalogue and already credited",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/sweeps/trigger" : {
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Run a sweep now",
        "description" : "Plans and starts a job whatever the trigger mode says. Returns as soon as the job is planned: ChainOS cannot sign, so the operations then wait for your Edge to collect and sign them. Poll the job for progress.",
        "operationId" : "trigger",
        "parameters" : [ {
          "name" : "policyId",
          "in" : "query",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "409" : {
            "description" : "SWEEP_IN_PROGRESS — a job for this policy is already running",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeJobView"
                }
              }
            }
          },
          "423" : {
            "description" : "POLICY_PAUSED — resume it first",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeJobView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — nothing is eligible to sweep right now",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeJobView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/sweeps/preview" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Preview a sweep — a dry run that signs nothing",
        "description" : "What a sweep would do right now, without building or signing anything. Works on a policy that does not exist yet: send the settings you are considering and see their consequence before saving them.\n\n`skipped` is the part worth reading. It groups every address the planner would decline and why — `SKIPPED_DUST` below your floor, `SKIPPED_FEE_RATIO` where gas would take more of the amount than `maxFeeRatioBps` allows, `SKIPPED_RESERVE` where a chain reserve pins the balance in place. A dust floor set too low shows up here as nine hundred tiny sweeps you are about to pay for; set too high, as a total that never moves.\n\n`feeRatioBps` is the estimated cost as a share of what would move. `gasTopUpsRequired` is how many addresses hold no native currency and would need funding first — each of those is a second transaction and a second confirmation wait.\n\nNothing is persisted and no fee is incurred.",
        "operationId" : "previewByQuery",
        "parameters" : [ {
          "name" : "chain",
          "in" : "query",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          }
        }, {
          "name" : "token",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePreview"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Preview a sweep with settings that are not saved yet",
        "description" : "As the GET form, but takes the economics you are considering. The portal calls this one, because the moment a customer needs to see the consequence of a dust floor is before the policy carrying it exists.",
        "operationId" : "preview",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PreviewBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePreview"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/sweeps/policies" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Sweep policies",
        "operationId" : "list_2",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedPolicyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Create a sweep policy",
        "description" : "One policy per chain and token. Omit `token` for the chain's native coin, which is a policy like any other.\n\n`triggerMode: threshold_and_schedule` is the recommended default and the reason is the shape of real deposit traffic: the threshold consolidates a large deposit within minutes instead of leaving it in a single-use address until the next cron, and the schedule batches the long tail of small balances into groups whose fee ratio is worth paying. A schedule frequent enough to do the first job does the second one badly.\n\n**Preview before you enable.** `POST /sweeps/preview` shows how many addresses would move, how many would be skipped and why, and what it would cost — and the case it exists for is a dust floor of zero on Ethereum, which pays gas to move 2 USDT deposits, every cycle, until somebody notices.",
        "operationId" : "create_2",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PolicyBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Policy created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — a trigger with no amount or no cron, a funding-wallet policy naming no wallet, a treasury wallet on another chain, or a policy that already exists for this pair. TOKEN_NOT_SUPPORTED / TOKEN_NOT_ON_CHAIN / TOKEN_NOT_SWEEPABLE — the catalogue does not carry this token here.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "404" : {
            "description" : "NOT_FOUND — no such treasury wallet on this account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/sweeps/policies/{policyId}/resume" : {
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Resume a paused policy",
        "description" : "Also clears the consecutive-failure counter. Resuming without clearing it would re-pause on the next single failure, which reads as the resume not having worked.",
        "operationId" : "resume",
        "parameters" : [ {
          "name" : "policyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/sweeps/policies/{policyId}/pause" : {
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Pause a sweep policy",
        "description" : "Stops it planning new jobs. Jobs already in flight finish — abandoning an operation that has been broadcast would leave funds moving with nothing watching for the confirmation.",
        "operationId" : "pause",
        "parameters" : [ {
          "name" : "policyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PauseBody"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/sweeps/jobs/{jobId}/retry" : {
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Retry the failed operations in a job",
        "description" : "Failed only, never skipped. A skip was a decision the guards made — the balance was dust, the fee ratio was too high — and retrying it runs the same arithmetic to the same answer at the cost of another estimate. Change the policy instead.",
        "operationId" : "retry",
        "parameters" : [ {
          "name" : "jobId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "INVALID_INPUT — this job has no failed operations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeJobView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/pipelines" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Pipelines, with their sources and any warnings",
        "operationId" : "list_3",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedPipelineView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Create a pipeline",
        "description" : "\"Consolidate all my USDC onto Polygon\", as one object over the sweep policies and bridge policy that do the work.\n\n**A source chain with no route to the destination is kept, not rejected.** It sits in the pipeline marked unsupported with the reason attached, its sweeps still run into its own treasury wallet, and nothing is bridged from it. A customer sweeping on six chains who can bridge from four wants the four to work and the other two visible — rather than silently dropped from a list they submitted.\n\n**Pipelines never chain bridges.** There is no search for an indirect path: multi-hop doubles the in-flight window and the failure surface for no benefit anybody asked for, so a missing direct route is surfaced here, at configuration time, rather than as a 422 at two in the morning.",
        "operationId" : "create_3",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PipelineBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "400" : {
            "description" : "INVALID_INPUT — a sweep policy for a different asset, a bridge policy for a different destination, or a name already in use",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePipelineView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/pipelines/{pipelineId}/run" : {
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Run every stage now",
        "description" : "Triggers a sweep on each supported source chain. Returns as soon as they are planned — ChainOS cannot sign, so the operations then wait for your Edge.\n\n**The bridge is not started here**, and that is deliberate rather than an omission: the sweeps have to confirm before their proceeds exist in the source treasury wallet, and bridging now would burn a balance that has not arrived. The bridge policy's own trigger fires when it has.\n\n`skipped` names every source that was passed over and why — an unsupported route, a paused policy, or simply nothing to move.",
        "operationId" : "run",
        "parameters" : [ {
          "name" : "pipelineId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeRunResult"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/funding-wallets" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Funding wallets",
        "description" : "With live balances and `estimatedSweepsRemaining` — the balance divided by a current fee estimate. \"4.21 POL\" says nothing about whether you need to act this week; \"about 180 sweeps left\" does. It is approximate by nature: gas prices move.",
        "operationId" : "fundingWallets",
        "parameters" : [ {
          "name" : "chain",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedFundingWalletView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Register a funding wallet",
        "description" : "Where the gas that pays for token sweeps comes from.\n\n**It takes no address, and that is the point.** A funding wallet names this chain's existing gas tank — the address your Edge derived on the change branch at enrolment, which is already the only address ChainOS may spend from without a person approving each transaction, is already never issued to any of your customers, and is already excluded from your billable address count. Letting a request body name the address gas is drawn from would point the one autonomous spend in the product wherever the body said.\n\nFund the tank itself as you normally would; this registers it for sweeping and adds a low-balance alert and the \"sweeps remaining\" figure.",
        "operationId" : "createFunding",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateFundingWallet"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "400" : {
            "description" : "INVALID_INPUT — no gas tank is registered for that chain yet",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeFundingWalletView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/bridges/transfers" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Bridge transfers",
        "operationId" : "transfers",
        "parameters" : [ {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "token",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedTransferView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Start a bridge transfer",
        "description" : "Three things are refused before anything is built, in this order: the destination cannot receive, your in-flight exposure is at its cap, and the fee ratio is above your policy's limit. **All three leave the funds in your source treasury wallet** — after the burn there are no cheap refusals left.\n\nReturns as soon as the source leg is built. ChainOS cannot sign, so your Edge then collects and signs the approval and the burn; poll the transfer for progress. The state to watch for is `SOURCE_CONFIRMED` — that is the moment the funds stop being on a chain and start being a claim.",
        "operationId" : "initiate",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TransferBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "422" : {
            "description" : "DESTINATION_NOT_READY — the mint would have nowhere to land. NO_BRIDGE_ROUTE — no provider carries this pair. FEE_RATIO_EXCEEDED — the cost is above your policy's limit.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTransferView"
                }
              }
            }
          },
          "409" : {
            "description" : "IN_FLIGHT_LIMIT_EXCEEDED — you already have this much burned and not yet minted",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTransferView"
                }
              }
            }
          },
          "403" : {
            "description" : "COMPLIANCE_REJECTED — the issuer refused (permissioned tokens only)",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTransferView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/bridges/transfers/{transferId}/relay" : {
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Submit the destination mint yourself",
        "description" : "Available whenever an attestation is in hand, not only after our fallback timer fires. A customer watching their own funds sit unminted should not have to wait for our timer to agree with them.",
        "operationId" : "relay",
        "parameters" : [ {
          "name" : "transferId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "409" : {
            "description" : "BRIDGE_NOT_READY — there is no attestation yet, or it has expired and needs re-attesting first",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTransferView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/bridges/transfers/{transferId}/reattest" : {
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Ask for an expired message to be signed again",
        "description" : "Its own operation rather than a retry. Re-submitting a dead message costs gas to be told what the expiry already said — the burn is still valid and what has to happen is that the attestation service signs it again.",
        "operationId" : "reattest",
        "parameters" : [ {
          "name" : "transferId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "409" : {
            "description" : "BRIDGE_NOT_READY — this transfer has not expired",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTransferView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/bridges/transfers/{transferId}/cancel" : {
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Abandon a transfer that has not broadcast",
        "description" : "Refused once the burn is on-chain. A burn cannot be recalled, and a transfer marked cancelled whose funds are somewhere else would be worse than no cancel at all.",
        "operationId" : "cancel",
        "parameters" : [ {
          "name" : "transferId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CancelBody"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTransferView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/bridges/quote" : {
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Quote a bridge — commits to nothing",
        "description" : "What the crossing would cost and what would actually arrive.\n\n`destinationReady` is the field to read. It is a live on-chain check, not a configuration lookup: on Solana the associated token account must exist, and on XRPL and Stellar a trust line must be established. Burning on the source when the destination cannot receive leaves the funds attested and unredeemable, so this is checked here and again before any burn is built — and `preparation` carries what would fix it.\n\n`feeRatioBps` is the protocol fee as a share of the amount. Gas is reported separately in each chain's own currency and deliberately not folded in: comparing a fee in ETH against an amount in USDC needs a price, and ChainOS has no price feed and should not acquire one to answer this.",
        "operationId" : "quote",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QuoteBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "422" : {
            "description" : "NO_BRIDGE_ROUTE — no provider carries this pair. The response names the reason and any routes that would serve the same purpose.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeQuote"
                }
              }
            }
          },
          "400" : {
            "description" : "TOKEN_NOT_BRIDGEABLE — the deployment you hold is a legacy or third-party representation and is not redeemable with the issuer",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeQuote"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/bridges/policies" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Bridge policies",
        "operationId" : "policies",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedPolicyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Treasury" ],
        "summary" : "Create a bridge policy",
        "description" : "One policy per token and destination. It is the standing instruction — when this token accumulates in a source treasury wallet, move it there.\n\n`maxFeeRatioBps` defaults to 100, a third of a sweep policy's 300, and the difference is deliberate: a sweep's alternative is leaving funds stranded in a deposit address, while a bridge's alternative is waiting until more has accumulated, which costs nothing. Bridging 50 USDC out of Ethereum can cost several dollars across both legs.\n\nThe three in-flight limits are the ones to set thoughtfully. They bound how much of your money can be burned and not yet minted at any moment — and refusing a bridge is always recoverable, while unbounded exposure to an attestation service is not.",
        "operationId" : "createPolicy",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PolicyBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "400" : {
            "description" : "INVALID_INPUT — a policy for this token and destination already exists, or the treasury wallet is on another chain",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePolicyView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions" : {
      "get" : {
        "tags" : [ "Transactions" ],
        "summary" : "List transactions",
        "description" : "Confirmation progress is reported against the chain's threshold, so a caller can render progress without knowing each chain's policy.",
        "operationId" : "list_4",
        "parameters" : [ {
          "name" : "chain",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "direction",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTransactionPage"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Transactions" ],
        "summary" : "Build an unsigned withdrawal",
        "description" : "Cloud selects inputs or fetches the nonce, prices the fee, and returns the exact payload to sign along with the derivation path.\n\nCloud never signs. When this endpoint is called against the Edge rather than Cloud, the Edge relays it here, signs the response inline and broadcasts — returning a txid in one round trip. `?autoSign=false` on the Edge disables that and returns the unsigned payload.",
        "operationId" : "create_4",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateTransactionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Unsigned payload built",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_ADDRESS or INVALID_AMOUNT",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "422" : {
            "description" : "INSUFFICIENT_FUNDS, INSUFFICIENT_GAS or INSUFFICIENT_RESERVE — three codes because they have three different remedies. Also DESTINATION_OPT_IN_REQUIRED on Stellar, where the destination holds no trustline for the asset and only that account can establish one, and CHAIN_REJECTED when the node itself refuses the transaction",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "503" : {
            "description" : "CHAIN_UNAVAILABLE",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/{unsignedId}/broadcast" : {
      "post" : {
        "tags" : [ "Transactions" ],
        "summary" : "Broadcast a signed transaction",
        "description" : "The signature was produced inside the customer's Edge. Cloud only relays it to the network.",
        "operationId" : "broadcast",
        "parameters" : [ {
          "name" : "unsignedId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BroadcastRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeBroadcastView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/wipe" : {
      "post" : {
        "tags" : [ "Edge settings" ],
        "summary" : "Schedule or execute a destructive wipe",
        "description" : "Sandbox executes immediately. Live additionally requires the account name typed exactly and an explicit fund-loss acknowledgement, and then waits 24 hours during which it can be cancelled. The recent-second-factor requirement is enforced for both by @RequiresOrgRole.\n\nScope: addresses, transactions, webhooks, deliveries, the address pool and all registered keys. Preserved: account, users, API keys, billing history and the full audit log.",
        "operationId" : "wipe",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WipeRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeWipeResult"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Edge settings" ],
        "summary" : "Cancel a scheduled wipe",
        "operationId" : "cancelWipe",
        "parameters" : [ {
          "name" : "X-Environment",
          "in" : "header",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/rotations/{rotationId}/reject" : {
      "post" : {
        "tags" : [ "Edge settings" ],
        "summary" : "Reject an identity rotation",
        "description" : "Discards the quarantined keys. The previously active keys are untouched and nothing stops being monitored.",
        "operationId" : "reject",
        "parameters" : [ {
          "name" : "rotationId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/rotations/{rotationId}/approve" : {
      "post" : {
        "tags" : [ "Edge settings" ],
        "summary" : "Approve an identity rotation",
        "description" : "Two-factor gated. The presented keys become active, the previous ones become superseded — retained and monitored forever — and address generation resumes at index 0 of the new key.\n\nApprove only if you rotated the mnemonic deliberately. If you did not, your API key may be compromised: reject and revoke it instead.",
        "operationId" : "approve",
        "parameters" : [ {
          "name" : "rotationId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Approved",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "403" : {
            "description" : "Owner only, and TOTP_REQUIRED without a recent second factor",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/proof-of-control" : {
      "post" : {
        "tags" : [ "Edge settings" ],
        "summary" : "Submit proof that you control an address",
        "description" : "When two accounts register the same address, Ziklag asks both parties to sign a nonce with the key that controls it. Run `chainos-edge prove-control --address <address> --nonce <nonce>` on your Edge — the key never leaves your machine — and submit the signature here.\n\nThe response is the same whatever you submit. Support will tell you the outcome; an API that confirmed a nonce was valid would let somebody discover that an address is disputed without being a party to it.",
        "operationId" : "proofOfControl",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ProofOfControlRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/keys/rotate" : {
      "post" : {
        "tags" : [ "Settings" ],
        "summary" : "Rotate the API key for an environment",
        "description" : "Revokes the current key immediately and returns a replacement. Owner only, and gated on a second factor. Any Edge using the old key will start receiving 401 on its next sync, so roll the Edge's configuration in the same maintenance window.",
        "operationId" : "rotate",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RotateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Rotated; raw key returned once",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMintedKeyView"
                }
              }
            }
          },
          "403" : {
            "description" : "Owner only, and TOTP_REQUIRED without a second factor",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMintedKeyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/edge-keys" : {
      "get" : {
        "tags" : [ "Edge settings" ],
        "summary" : "List local Edge API keys",
        "description" : "Every key the account holds, newest first, in both environments — each row says which. Deliberately not scoped to the caller's environment: a portal session is live unless the console asks for sandbox, so scoping it hid every key minted for the other one, and a key the console cannot see is a key nobody can revoke.",
        "operationId" : "list_5",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedEdgeKeyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Edge settings" ],
        "summary" : "Mint a local Edge API key",
        "description" : "Creates a `zkl_*` key for the fintech's own application. The raw value is shown once.\n\nKeys are minted here rather than by the Edge so that every replica accepts them: a key minted inside one pod would 401 on the others. The set propagates to every replica within one heartbeat.",
        "operationId" : "mint",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateEdgeKeyRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMintedEdgeKeyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/treasury/simulate-sweep-failure" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Make the next sweeps on a policy fail",
        "description" : "For the funding-wallet-exhausted scenario. What it proves is that the policy pauses cleanly at its threshold rather than failing once per address, which is the difference between one alert and four hundred.",
        "operationId" : "simulateSweepFailure",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SweepFailureBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/treasury/simulate-source-confirmed" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Confirm a sandbox burn, putting the funds in flight",
        "description" : "The transition that changes everything downstream. After it the money exists in neither place, every stall threshold starts counting, and the transfer appears in your in-flight exposure.",
        "operationId" : "simulateSourceConfirmed",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AttestationBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/treasury/simulate-provider-outage" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Take a provider's off-chain service down",
        "description" : "An attestation service that is unreachable is a delay rather than a failure, and a transfer must keep polling through it. This is how a customer confirms their own dashboards say 'waiting' rather than 'broken'.",
        "operationId" : "simulateProviderOutage",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ProviderOutageBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/treasury/simulate-gas-price" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Set a gas price, to exercise the fee-ratio guard",
        "description" : "The scenario this exists for is a gas spike: the guard should defer the sweep rather than destroy value, and a customer should see that happen once before it happens for real.",
        "operationId" : "simulateGasPrice",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/GasPriceBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/treasury/simulate-attestation" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Decide what the attestation service says",
        "description" : "Drives a sandbox transfer to any of the four outcomes the real service can produce.\n\n`stall` and `expired` are the two worth rehearsing. Both put your funds in the state where they exist in neither place, which is the only genuinely dangerous thing this component does — and the cheapest moment to discover that your alerting does not fire is here rather than at two in the morning with real money.\n\n`complete` after a `delaySeconds` is the happy path with the waiting made visible.",
        "operationId" : "simulateAttestation",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AttestationBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "The transfer moved",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "403" : {
            "description" : "SANDBOX_ONLY — this is not a sandbox key",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "409" : {
            "description" : "BRIDGE_NOT_READY — the transfer has not burned yet, so there is nothing to attest",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/simulate-deposit" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Simulate an inbound deposit",
        "description" : "Injects an event into the same pipeline a real chain event travels, so matching, confirmation tracking, settlement and webhook delivery are all genuinely exercised. No outbound chain call is made.\n\nDeposits are of the chain's **native** asset, so `amount` is denominated in it — POL on Polygon, BNB on BSC. A request carrying `tokenContract` or `decimals` is rejected rather than reinterpreted.\n\n`chain` is optional and only needed to disambiguate. ETH, BSC, Polygon, Avalanche and Base share one extended public key, so the same address is registered on each and the address alone cannot say which chain a deposit arrived on; omitting `chain` for such an address is a 400 listing the candidates. On BTC, TRON, Solana, XRP and Stellar it can always be omitted.\n\n`confirmAfterSeconds` defaults to 15 and has a minimum of 1 — a hardcoded delay makes CI runs needlessly slow.",
        "operationId" : "simulateDeposit",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SimulateDepositRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Deposit simulated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — ambiguous address with no `chain`, or a token deposit was requested",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "403" : {
            "description" : "SANDBOX_ONLY — a live key cannot reach these endpoints",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/simulate-confirmation" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Advance a simulated transaction's confirmations",
        "description" : "Fires every threshold crossed on the way, so a jump from 0 to 3 on Bitcoin produces all three webhooks. Omitting `confirmations` advances by one.",
        "operationId" : "simulateConfirmation",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SimulateConfirmationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/migration/projects/{projectId}/simulate-conflict" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Simulate a cross-account address conflict",
        "description" : "Registers one of your addresses to a second account, so the next import that names it is refused the way a real conflict would be.\n\n**Why this is worth rehearsing.** Two customers who both restored the same published test mnemonic, or one moving a seed between a sandbox and a live account, produce identical addresses — and address identity is per-account by design, so nothing prevents it at write time. What happens instead is that the import detects the claim and escalates it to a person, because a dispute between two customers about who owns an address is not something software should settle.\n\nThe conflict is real: a real address row held by a real second account, found by the same account-blind query the live import runs. Call `clear-conflict` when you have seen it.",
        "operationId" : "simulateConflict",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SimulateConflict"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/migration/projects/{projectId}/simulate-activity" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Simulate chain activity against a migrated book",
        "description" : "Writes deposits against the project's adopted addresses — some below each address's webhook watermark and some above it — so the invariant that matters can be checked rather than trusted.\n\n**The watermark is the thing being rehearsed.** An imported address carries the block height it was adopted at, and a transaction below it is history the customer already settled somewhere else. Firing a webhook for it asks them to credit the same deposit twice, which for a lender disbursing against confirmed deposits is not a cosmetic problem.\n\nAfter this runs, the response says how many transactions were written on each side of the line. Check your endpoint: it should have received the live ones and none of the historical ones.",
        "operationId" : "simulateActivity",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SimulateActivity"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/migration/projects/{projectId}/clear-conflict" : {
      "post" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Release a simulated conflict",
        "description" : "Removes the counterparty's claim. Only ever touches addresses held by the sandbox fixture account, in the sandbox environment.",
        "operationId" : "clearConflict",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/sessions" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "List checkout sessions",
        "description" : "Newest first. Filterable by status, chain and your own reference.",
        "operationId" : "list_6",
        "parameters" : [ {
          "name" : "status",
          "in" : "query",
          "description" : "created | awaiting_payment | underpaid | detected | confirmed | completed | expired | expired_paid | cancelled",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "chain",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "reference",
          "in" : "query",
          "description" : "Your own order id, as sent in `reference`.",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "merchantId",
          "in" : "query",
          "description" : "Only this sub-merchant's checkouts. A merchant-scoped key is confined to its own regardless.",
          "required" : false,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSessionPage"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Create a checkout session",
        "description" : "Derives a payment address and returns it, in one round trip. The address exists the moment this returns — nothing is queued and no Edge call is made, because Cloud holds the extended public key and derivation is pure computation. A merchant's Edge can be offline and checkout keeps working on all seven supported chains; only sweeping waits.\n\n`clientSecret` comes back **exactly once**, here. It is what a browser presents to read this session, so hand it to the page and store nothing: a later read of this session returns null for it and there is no way to recover it.\n\n**Do not fulfil an order on this response, or on the component's `onSuccess`.** Fulfil on the `payment.confirmed` webhook, which is signed and comes from us. `onSuccess` runs in your own JavaScript and its argument can be typed into a console.\n\nAmounts are decimal strings in the asset's own units. A figure with more decimal places than the asset has is refused rather than rounded — rounding it would quietly ask the payer for less than you asked for and then report the order paid in full.",
        "operationId" : "create_5",
        "parameters" : [ {
          "name" : "Idempotency-Key",
          "in" : "header",
          "description" : "Replaying a create with the same key returns the original session rather than deriving a second address.",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateSessionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Session created; pay the address",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSessionView"
                }
              }
            }
          },
          "403" : {
            "description" : "CHAIN_NOT_READY, INVALID_AMOUNT (below the economic minimum for this chain at current fees), or PAYMENT_SESSION_LIMIT_EXCEEDED",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSessionView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — an unsupported chain, an asset that is not in the catalogue, or an amount with more precision than the asset carries",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSessionView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/sessions/{sessionId}/cancel" : {
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Cancel a checkout session",
        "description" : "Only a session that has received nothing. One holding a customer's funds is refused, and that refusal is the point: cancelling it would take it off the screen that is the only place anybody could notice the money.\n\nCancelling does **not** stop the address being monitored. A payment broadcast before the cancellation can be mined after it, and it is still the payer's money — it arrives as `payment.late` and the session reads `expired_paid`.",
        "operationId" : "cancel_1",
        "parameters" : [ {
          "name" : "sessionId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CancelSessionRequest"
              }
            }
          }
        },
        "responses" : {
          "409" : {
            "description" : "PAYMENT_CLOSED — already settled, already cancelled, or holding funds",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSessionView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/merchants" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "List merchants",
        "description" : "Newest first, paged and filtered on the server. A merchant-scoped key sees only its own.",
        "operationId" : "listMerchants",
        "parameters" : [ {
          "name" : "status",
          "in" : "query",
          "description" : "active | suspended | closed",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "search",
          "in" : "query",
          "description" : "Matches display name or slug, case-insensitively.",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedMerchantView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Provision a merchant",
        "description" : "Creates one of your customers as a sub-merchant. Nothing is derived and no address exists yet — a merchant is a name, a logo, a commission and a balance until a checkout is opened against it.\n\n`slug` and `externalRef` are both immutable, because both are identifiers other systems will have stored: one appears in URLs you have sent to customers, the other is the join back to your own records.",
        "operationId" : "createMerchant",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateMerchantRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Merchant provisioned",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMerchantView"
                }
              }
            }
          },
          "409" : {
            "description" : "CONFLICT — that slug or externalRef is already in use in this environment. On externalRef this almost always means a retry rather than a second merchant.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMerchantView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — a slug that is not URL-safe, or a commission outside 0–10000 basis points",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMerchantView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/merchants/{merchantId}/payouts" : {
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Record a payout you have made",
        "description" : "**This does not pay anybody.** ChainOS has no payout rail and cannot acquire one without a new signing guard on your Edge — the one control that stops a compromised Cloud redirecting funds. Calling this asserts that you transferred the money on your own rails, and the only thing it changes here is the balance.\n\n`externalReference` is the idempotency key. Sending it twice records one payout, so a retry after a timeout is safe.",
        "operationId" : "recordMerchantPayout",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PayoutRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Recorded; balance reduced",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeEntryView"
                }
              }
            }
          },
          "409" : {
            "description" : "CONFLICT — that reference is already recorded for this merchant. Almost always a retry rather than a second payout.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeEntryView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/merchants/{merchantId}/brand" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "List a merchant's brand assets",
        "operationId" : "listMerchantBrandAssets",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListAssetView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Upload a merchant's logo",
        "description" : "PNG, JPEG or WebP, 256 KiB or smaller. Replaces whatever was there: one logo per kind per merchant, and the id changes with the bytes, which is what makes the served URL safe to cache forever.\n\n**SVG is refused.** An SVG is a document that can carry script, and this file is served from the same origin as the checkout page that displays payment addresses. The type is read from the bytes, not from the `Content-Type` you send, so relabelling one does not get it in.",
        "operationId" : "uploadMerchantLogo",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "kind",
          "in" : "query",
          "description" : "logo | logo_dark. Defaults to logo.",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "logo"
          }
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "image/png" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "image/jpeg" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "image/webp" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "application/octet-stream" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Stored; use `url` to display it",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAssetView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — not a PNG/JPEG/WebP, empty, or over 256 KiB",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAssetView"
                }
              }
            }
          },
          "404" : {
            "description" : "No such merchant",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAssetView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Payments" ],
        "summary" : "Remove a merchant's logo",
        "description" : "Silent when there was none: deleting a logo that is already gone is the state you asked for.",
        "operationId" : "deleteMerchantLogo",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "kind",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "logo"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK"
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/merchants/{merchantId}/adjustments" : {
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Correct a balance",
        "description" : "In either direction, and it appears on the merchant's statement with your reason. Nothing already written is edited: the book is append-only, because a statement a merchant has already read must keep saying what it said.\n\nThis is also how a payment that arrived in the wrong asset is resolved. Such a payment is credited to nobody — settling an order against an asset the merchant never agreed to price would be worse than leaving it unattributed — so it sits in your treasury until you decide what it was.",
        "operationId" : "recordMerchantAdjustment",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AdjustmentRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeEntryView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/links" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "List payment links",
        "description" : "Newest first.",
        "operationId" : "list_7",
        "parameters" : [ {
          "name" : "status",
          "in" : "query",
          "description" : "active | paused | closed",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "mode",
          "in" : "query",
          "description" : "fixed | donation",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLinkPage"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Create a payment link",
        "description" : "Two shapes, and choosing the wrong one produces a page that does not do what you meant.\n\n**`fixed`** is an invoice with a URL: one amount, one payer, its own address, closed by its first settled payment. `amount` is required and the URL is always generated — a guessable address on a fixed link would publish what one customer was charged to anybody who tries the obvious words.\n\n**`donation`** is a campaign: any amount, from anybody, accumulating until a `thresholdAmount` is reached or `closesAt` passes. **One of the two is required.** A donation link with neither could never close, and the address behind it would be monitored for the life of the account. You may choose your own `slug` here, because the page is public by intent.\n\n`addressMode` decides whether donors can be given receipts with their names on them. `per_payer` (the default) derives an address per donor and attributes every gift; `shared` publishes one address for the life of the link — printable, postable, and the usual point of a donation link — at the cost of not being able to tell two simultaneous donors apart. Say so on your page if you choose it.",
        "operationId" : "create_6",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateLinkRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Link created; the page is live",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLinkView"
                }
              }
            }
          },
          "409" : {
            "description" : "CONFLICT — the slug is taken. Link addresses are unique across ChainOS, so it may not be one of yours.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLinkView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — a donation link with no closing condition, a fixed link with no amount, or a chosen slug on a fixed link",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLinkView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/links/{linkId}/resume" : {
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Resume a paused payment link",
        "operationId" : "resume_1",
        "parameters" : [ {
          "name" : "linkId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "409" : {
            "description" : "PAYMENT_CLOSED — not paused, or it met its closing condition while paused and resuming would reopen a finished campaign",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLinkView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/links/{linkId}/pause" : {
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Pause a payment link",
        "description" : "Takes the page down without closing the link. Reversible, and the total is kept. The address keeps being monitored, because money already in flight toward it is still yours.",
        "operationId" : "pause_1",
        "parameters" : [ {
          "name" : "linkId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLinkView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/links/{linkId}/close" : {
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Close a payment link",
        "description" : "Irreversible. The page stops being available and the address behind a shared link is scheduled for release — after the late-payment grace, not immediately, because money broadcast before the close can be mined after it and it is still the payer's money.\n\nTo take a page down temporarily, pause it instead.",
        "operationId" : "close",
        "parameters" : [ {
          "name" : "linkId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLinkView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/keys" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "List payment keys",
        "description" : "Masked. A secret key's raw value is unrecoverable by design; rotate it if it has been lost.",
        "operationId" : "list_8",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListKeyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Mint a payment key pair",
        "description" : "Returns a secret key (`pmk_…`) and a publishable key (`ppk_…`) together, once. Both raw values appear in this response and in no other.\n\nThey are not interchangeable and the pairing is deliberate: issuing them separately is how the secret one ends up in a page. **The secret key is server-side only.** It creates sessions whose amount your own code decided, and it is the documented default.\n\nThe publishable key is meant to be embedded, so it can do exactly one thing — `POST /v1/checkout/sessions` — from an origin you list, up to an amount you cap. `origins` and `maxAmount` are both **required** for it, and enforced by the database rather than by this handler.\n\n**`maxAmount` bounds the upside only.** In publishable mode the browser asserts the amount, so a buyer can ask for 0.01 against a 100.00 order and be reported, truthfully, as paid in full. The confirmation webhook carries both `amountPaid` and `requestedAmount` — compare `amountPaid` against your own order total, server-side, before you ship anything.",
        "operationId" : "mint_1",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/MintKeyRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Both keys minted; the raw values are in this response only",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMintedPair"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — a publishable key with no origin list or no amount cap, or an origin that is not an exact scheme://host[:port]",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMintedPair"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/keys/{keyId}/rotate" : {
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Rotate a payment key",
        "description" : "Mints a successor and leaves the current key working for a grace period rather than killing it. That is the whole difference from revoking, and it exists because a publishable key is baked into a deployed page: revoking the instant a successor exists takes your checkout down until you have shipped a release.\n\n**If you believe a key is compromised, revoke it instead.** Rotation is for hygiene; revocation is for incidents.",
        "operationId" : "rotate_1",
        "parameters" : [ {
          "name" : "keyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMintedPair"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/invoices/{invoiceId}/resend" : {
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Send an invoice to the customer again",
        "description" : "For the case that actually happens: the payer mistyped their address, or gave one they have since lost. The invoice is unchanged — the number, the amounts and the transaction are all fixed, because reissuing those would be issuing a different invoice.\n\n**The link in the earlier email stops working.** A resend mints a new token, which is the point rather than a side effect: if the first copy went to the wrong address, leaving that link live leaves a stranger holding a working receipt with your customer's name and order on it.",
        "operationId" : "resend",
        "parameters" : [ {
          "name" : "invoiceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ResendRequest"
              }
            }
          }
        },
        "responses" : {
          "400" : {
            "description" : "INVALID_INPUT — no email on the invoice and none supplied",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeInvoiceView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/brand" : {
      "post" : {
        "tags" : [ "Payments" ],
        "summary" : "Upload your own logo",
        "description" : "The fintech's mark, shown beside each of your merchants' logos on their checkout pages. Same formats and ceiling as a merchant's.",
        "operationId" : "uploadAccountLogo",
        "parameters" : [ {
          "name" : "kind",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "logo"
          }
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "image/png" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "image/jpeg" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "image/webp" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "application/octet-stream" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAssetView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Payments" ],
        "summary" : "Remove your own logo",
        "operationId" : "deleteAccountLogo",
        "parameters" : [ {
          "name" : "kind",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "logo"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK"
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations" : {
      "get" : {
        "tags" : [ "Organizations" ],
        "summary" : "List the organizations you belong to",
        "operationId" : "mine_1",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListOrganizationView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Organizations" ],
        "summary" : "Create an organization",
        "operationId" : "create_7",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeOrganizationView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{accountId}/members/{userId}/role" : {
      "post" : {
        "tags" : [ "Organizations" ],
        "summary" : "Change a member's role",
        "operationId" : "changeRole",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "userId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RoleRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMemberView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{accountId}/invitations" : {
      "post" : {
        "tags" : [ "Organizations" ],
        "summary" : "Invite someone by email",
        "operationId" : "invite",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/InviteRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/uploads" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Start an address file upload",
        "description" : "Returns a URL to PUT your file to, and a deadline. Two steps rather than one because the files are too big for a request body: a million-row JSONL is around 150 MB, and a form upload caps out at 2 MB.\n\nWhere object storage is configured the URL is presigned and the bytes never pass through the ChainOS API at all. Where it is not, the URL is an endpoint here, authenticated the same way this request was. **Your code is the same either way** — PUT to `uploadUrl` with the headers you are given, then mark the upload complete.\n\nFour formats are understood and detected automatically: CSV, JSON Lines, BIP-380 output descriptors, and `chainos-xpub-v1`. If you have Bitcoin addresses, a descriptor is worth the trouble — it carries the script type and the derivation path together, checksummed, so the two cannot disagree.",
        "operationId" : "openUpload",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OpenUpload"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUploadSlot"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/uploads/{uploadId}/complete" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Finish an upload",
        "description" : "Confirms the bytes arrived and tells you what actually did. The size is measured rather than taken from your request: a truncated upload is the one failure in this pipeline that produces a plausible wrong answer instead of an error, so it is checked rather than assumed.\n\n`detectedFormat` is what the file was read as. Worth looking at — it is the fastest way to notice that you uploaded last week's export.",
        "operationId" : "completeUpload",
        "parameters" : [ {
          "name" : "uploadId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUploadReceipt"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/scans/{scanId}/abort" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Stop a running scan",
        "description" : "Keeps what it found. If you have already seen the addresses you expected, there is no reason to pay for the remaining probes.",
        "operationId" : "abort",
        "parameters" : [ {
          "name" : "scanId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AbandonRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeScanView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "List migration projects",
        "operationId" : "list_9",
        "parameters" : [ {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedProjectView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Create a migration project",
        "description" : "The container for bringing one book across. A project holds key sources of different kinds at once, which is the ordinary case rather than the exotic one — a primary mnemonic, a second mnemonic and eighty raw keys is one migration, not three.\n\n`mode` is optional and defaults to what the assessment recommends. Your explicit choice wins over the recommendation: you know things about your own wind-down that a decision tree does not.",
        "operationId" : "create_8",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateProject"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeProjectView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/imports" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "List a project's import batches",
        "operationId" : "listBatches",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedBatchView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Create an import batch",
        "description" : "One batch is one source — a file, or one discovery scan. A customer with a primary mnemonic, a second mnemonic and eighty raw keys makes three batches in one project, which is the ordinary case rather than the exotic one.\n\n**`keySourceId` decides whether these addresses can ever send.** Name the key source they were derived from and each row is checked against its extended public key; leave it out and they are adopted watch-only — monitored and credited, withdrawals refused. Watch-only is a first-class state and not a degraded one, and it stops being true the moment you register the key source, without re-importing anything.\n\n`userRefMappingCsv` is two columns, `derivation_index,user_ref`. It is for a file that has indices and no references of its own; a row's own `user_ref` always wins, because overwriting one would quietly reassign an address to a different customer of yours.\n\nCreating a batch validates nothing. POST to `/validate` next.",
        "operationId" : "createBatch",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateBatch"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeBatchView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/discover" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Start a discovery scan",
        "description" : "Derives addresses along your key source's path and probes each for activity, stopping after `gapLimit` consecutive unused indices. Returns immediately; the scan runs in the background and reports progress.\n\n**`userRefMappingCsv` is the field that matters.** Discovery finds addresses; only you know which of your customers each one belongs to, and that mapping is your business. Two columns — `derivation_index,user_ref` — which you can produce from your own database with one query and cannot get wrong the way a hand-built address list can.\n\n`probeTokens` is worth setting. An address that only ever held USDT has no native transaction count on some chains, and a scan looking only at the native side would call it unused and walk past your money.\n\n`maxScan` above 10,000 is not refused — the scan runs at 10,000 and a Ziklag administrator is asked about the rest. An unbounded scan is a provider-cost incident, and refusing outright would send away a customer with a genuinely large book.\n\n**Not available on Solana or Stellar.** Both use Ed25519, which admits no public-key-only derivation, so no extended public key exists to scan. Supply an explicit address list for those chains.",
        "operationId" : "discover",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/StartScan"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeScanView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/deactivate" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Go back to observing",
        "description" : "Holds webhooks and withdrawals again. The addresses stay monitored and their deposits keep being recorded — nothing is lost, and cutting over again later announces nothing that happened in between.\n\n**Deliberately lighter than the cutover it reverses.** If you have just cut over and found your system and ours disagreeing, you need this to work now, not after a second person approves it.",
        "operationId" : "deactivate",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Reason"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeProjectView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/consolidation/plan" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Plan a consolidation — derives the replacement addresses, moves nothing",
        "description" : "Works out which of the project's adopted addresses would move, how much of each balance can actually leave, and derives one fresh ChainOS address to replace each one. **Nothing is signed and nothing moves.**\n\n**Most customers should not do this.** Adopted addresses are already monitored and credited, and once a key source covers them they are already spendable. Consolidating costs a network fee per address and asks every one of your end users to learn a new address. MG §3.2 makes it required only where a custodian holds the keys and will not sign — everywhere else it is a choice, and usually the wrong one.\n\n**Every replacement inherits the `userRef` of the address it replaces.** That mapping is fixed here and never afterwards, so you can export it, stage your own change, and cut both over together. `GET /consolidations/{id}/mapping` is available from this moment, not only after the funds have moved.\n\nThe signing path is determined rather than chosen. An account with an active foreign key source uses the Edge; one with none has nothing here that can sign, and the batch is exported for whoever holds the keys.\n\nRefused while the project is still in observe mode: moving the funds out from under the comparison you are running is the one thing observe mode exists to let you avoid.",
        "operationId" : "plan",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PlanBody"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Planned, with the full mapping",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — the project has adopted nothing on these chains, everything is already consolidated or watch-only, or nothing is above the dust floor",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "409" : {
            "description" : "CONSOLIDATION_NOT_READY — another plan over this project has not finished",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "423" : {
            "description" : "ADDRESS_IN_OBSERVE_MODE — cut the project over first",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "404" : {
            "description" : "NOT_FOUND — no such project",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/activate" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Cut over",
        "description" : "Webhooks start firing and withdrawals are accepted for every address this project adopted. Do it once your own system and this one agree.\n\nOwner only, with a second factor, because it is the moment your production traffic starts depending on us.\n\n**The historical watermark is not cleared**, and that is deliberate: transactions from before your import stay silent forever. Cutting over starts the future, it does not replay the past.",
        "operationId" : "activate",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeProjectView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/key-sources/{keySourceId}/resolve" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Check again which addresses this wallet can sign for",
        "description" : "Runs spendability resolution again. Every watch-only address the account holds that this key source covers becomes spendable.\n\nThis normally happens by itself — on registration, and on every import commit — so running it is a way of being certain rather than a step in any flow. It exists because the automatic triggers cannot cover everything: an address unarchived after a registration, or one adopted by a batch that named no key source, is covered by a wallet nothing will ask about again.\n\nIdempotent, so running it is never worse than not running it.",
        "operationId" : "resolve",
        "parameters" : [ {
          "name" : "keySourceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/imports/{batchId}/validate" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Validate a batch and produce a dry run",
        "description" : "Runs the seven validation phases and returns the report you review before committing. Nothing is adopted and nothing is billed.\n\n**The phases are the diagnosis.** `byPhase` groups the failures, and the group is usually more useful than any single message: everything failing `chain_format` is a column shifted by one, everything failing `derivation` is the wrong base path, everything failing `uniqueness` is a file that was already imported.\n\nThree outcomes are deliberately not errors. A row already in your account is **skipped**, so correcting twelve rows and re-uploading the whole file is safe. EIP-55 casing that does not match is a **warning** — a lowercase address is the same address. A row that could not be checked against your key is adopted as **watch-only** rather than refused.\n\nRe-runnable, and re-running mints a new `dryRunId`. That is what makes the review structural: a commit quoting the previous id is refused, because the report you read is no longer what would be committed.",
        "operationId" : "validate",
        "parameters" : [ {
          "name" : "batchId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeDryRun"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/imports/{batchId}/rollback" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Undo an import",
        "description" : "Removes the addresses this batch adopted. Available for 72 hours, and only while no transaction has been recorded on any of them — the second condition is the real one, because once an end user has sent money to an address, removing it would leave a confirmed deposit belonging to an address your account no longer has.\n\nThe validated rows are kept, so you can correct your file and import again without re-uploading what was already right.",
        "operationId" : "rollback",
        "parameters" : [ {
          "name" : "batchId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Reason"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeRollbackResult"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/imports/{batchId}/commit" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Adopt the addresses this batch validated",
        "description" : "The point of no return, and deliberately the only request here that is one. Every address becomes monitored, credited and queryable — and **silent**: webhooks and withdrawals are held until you activate the project, so you can run your old system and this one against the same addresses and compare before trusting either.\n\n`dryRunId` must be the batch's current one. Anything else is `DRY_RUN_STALE`, because a report you have not read describes a different set of addresses and a different bill.\n\n`acceptBillingChange` is required only when adopting the book takes you past your band, and it is asked separately from the commit itself: pressing the button and agreeing to a larger invoice are different questions, and only one of them can be answered by a click you were already making.\n\n**Every historical transaction on these addresses stays silent, permanently.** The block height at this moment is recorded against each address, and anything before it is recorded and never announced — otherwise the deposits you settled months ago would arrive as webhooks asking you to credit them again.\n\nRollback is available for 72 hours, and only while nothing has landed.",
        "operationId" : "commit",
        "parameters" : [ {
          "name" : "batchId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Commit"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeCommitResult"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/detect-path" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Work out which derivation path produced an address",
        "description" : "For Case B, where you do not know how your addresses were derived. Give one address you are certain is yours and every candidate path is tried against it — BIP-44, 49, 84 and 86 for Bitcoin, the standard and Ledger Live variants for EVM.\n\nTakes an extended **public** key, which derives addresses and no private key. If you hold only a recovery phrase, run `chainos-edge detect-path` instead: producing the key for a candidate path needs the seed, and ChainOS never receives one.\n\n**A match at index 0 is ambiguous** and says so. The first Ledger Live address and the first standard address are the same path, so one address cannot separate them. If it is Ledger Live, every later address hangs off a hardened account this key cannot reach — a scan would find exactly one address. Send a second known address to settle it.",
        "operationId" : "detectPath",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DetectPathRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePathVerdict"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/detect-case" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Work out which migration case you are in",
        "description" : "Answers the questions in the onboarding decision tree and returns one of six cases, a recommended mode, and an honest complexity estimate.\n\n**Creates nothing.** Run it as often as you like while you work out what you actually hold — finding out that ChainOS cannot help you should not leave a project behind to explain.\n\n`standardWallet` takes three values and the third matters: `true` for MetaMask, Trezor or Ledger, `false` for something bespoke, and **null for \"unsure\"**. Unsure is the common answer and routes to Case B, where the derivation path is determined empirically from one known address. It is not read as \"probably standard\": guessing that wrong means an Edge deriving addresses that are not yours, and a book that appears to have vanished.",
        "operationId" : "detectCase",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DetectCaseRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeCaseVerdict"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/consolidations/{planId}/retry" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Retry the failed movements in a plan",
        "description" : "Failed only, never skipped. A skip was a decision the guards made about a balance; retrying it reaches the same decision at the cost of another estimate. The mapping is unchanged — a retried movement goes to the same replacement address it was always going to.",
        "operationId" : "retry_1",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/consolidations/{planId}/execute" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Approve the plan and start moving funds",
        "description" : "**Owner and a second factor.** Everything up to here was reversible; this is the call that pays network fees and changes the addresses your end users send to.\n\nReturns as soon as the movements are recorded. ChainOS cannot sign, so on the Edge path each movement then waits for your Edge to collect and sign it — poll the plan for progress. On the external path the movements are built and wait at `AWAITING_SIGNATURE` for you to export them.",
        "operationId" : "execute",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "403" : {
            "description" : "TOTP_REQUIRED — present a second factor and retry",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "409" : {
            "description" : "CONSOLIDATION_NOT_READY — the plan is not PLANNED",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/consolidations/{planId}/cancel" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Abandon a plan that has not moved anything",
        "description" : "Self-serve, like every undo here. Refused once funds have moved — a half-applied mapping is worse than a finished one, because you cannot tell which of your end users are on which address.",
        "operationId" : "cancel_2",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CancelBody"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/consolidations/{planId}/broadcast" : {
      "post" : {
        "tags" : [ "Migration" ],
        "summary" : "Take the signed batch back and broadcast it",
        "description" : "**Owner and a second factor**, exactly like `execute`. That the signatures were produced somewhere else does not make the broadcast somebody else's decision — this is the call that moves the money.\n\n**All or nothing.** If any line names a movement that was not waiting for a signature, or appears twice, or cannot be parsed, the whole file is refused and nothing is broadcast. Accepting the lines that verified while saying nothing about the rest would broadcast half a consolidation, which is the worst of the three possible outcomes.\n\nLines naming a movement from a different plan are reported as `unmatched` rather than treated as an error — that is what an older export signed by mistake looks like, and you should be told rather than watch nothing happen.",
        "operationId" : "broadcast_1",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            },
            "text/plain" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "file" : {
                    "type" : "string",
                    "format" : "binary"
                  },
                  "body" : {
                    "type" : "string",
                    "format" : "byte"
                  }
                }
              }
            }
          }
        },
        "responses" : {
          "400" : {
            "description" : "SIGNED_BATCH_REJECTED — the detail names every line that failed and why",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeBroadcastResult"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/sync" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Register an Edge and its extended public keys",
        "description" : "Runs at Edge boot, after key derivation and before the Edge's local API opens for chain operations.\n\nOn first sync the presented Edge Identity Key is pinned. On every subsequent sync the signature must verify against that pinned key. A different key means the mnemonic behind it changed — the sync is rejected, the presented keys are quarantined, and every address derived from every prior key continues to be monitored unchanged.",
        "operationId" : "sync",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SyncBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Synced; installation token issued",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSyncResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "UNAUTHORIZED, EDGE_SIGNATURE_INVALID, EDGE_SIGNATURE_SKEW or EDGE_NONCE_REPLAY",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSyncResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "NO_SUBSCRIPTION",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSyncResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "IDENTITY_ROTATION_PENDING, CROSS_ENVIRONMENT_IDENTITY, or ALREADY_ENROLLED when this Edge has already enrolled and the request registers nothing new — use /edge/resume for a restart",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSyncResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/pool" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Deliver a batch of Edge-derived pooled addresses",
        "description" : "For any chain whose curve admits no extended public key. The start index is assigned by Cloud; an Edge that invents its own index has its out-of-range entries ignored. An omitted chain is read as `sol`.",
        "operationId" : "addressPool",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PoolBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/sol-pool" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Deliver a batch of Edge-derived pooled addresses",
        "description" : "For any chain whose curve admits no extended public key. The start index is assigned by Cloud; an Edge that invents its own index has its out-of-range entries ignored. An omitted chain is read as `sol`.",
        "operationId" : "addressPool_1",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PoolBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/resume" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Re-attach an already-enrolled Edge",
        "description" : "What an Edge sends on every boot after the first. It carries no extended public keys and no pooled addresses, because Cloud already holds them — re-sending six xpubs and two thousand addresses on every restart is waste that compounds under an autoscaler. Returns a session, an installation token, the current local API key set and the stream endpoint, and registers nothing. The identity check is the same one /sync performs: resume is not a way around the rotation gate.",
        "operationId" : "resume_2",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ResumeBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Re-attached",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSyncResponse"
                }
              }
            }
          },
          "409" : {
            "description" : "RESYNC_REQUIRED — no enrolment is on record, so the Edge must call /sync; or IDENTITY_ROTATION_PENDING",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSyncResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/leader/renew" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Renew the leader lease",
        "operationId" : "renew",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LeaseBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLeaseResult"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/leader/release" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Release the leader lease",
        "description" : "Called by preStop. This is what turns a scale-in into a sub-second failover rather than a 45-second wait for the TTL.",
        "operationId" : "release",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LeaseBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/leader/acquire" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Acquire the leader lease",
        "description" : "At most one leader per account per environment, enforced by a partial unique index rather than by application logic.",
        "operationId" : "acquire",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LeaseBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Granted; epoch returned",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLeaseResult"
                }
              }
            }
          },
          "409" : {
            "description" : "LEASE_HELD",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLeaseResult"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/key-sources" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Register a wallet the customer already had",
        "description" : "Sent by `chainos-edge import-mnemonic` and `chainos-edge import-keys`, from the machine that holds the key material. Carries a deterministic fingerprint, extended **public** keys, and the addresses the Edge derived — never a mnemonic and never a private key. There is no endpoint that accepts either.\n\n**Idempotent on the fingerprint.** The fingerprint is computed from public material, so every replica importing the same wallet computes the same one and the second registration adds addresses rather than a second source. Re-running the command is how an operator checks that the first one landed.\n\n**Spendability is resolved as part of this call**, and `addressesPromoted` is how many watch-only addresses the account already held that this wallet can sign for. A customer who imported addresses in March and registers keys in April sees those addresses start working here — that sequence is the ordinary one, not an edge case.\n\nEvery pushed address is re-derived from the registered extended public key and a single mismatch refuses the whole registration with `KEY_SOURCE_MISMATCH`, writing nothing. A source recorded from a key and a list that do not belong together marks addresses spendable that nothing can sign for, which the customer discovers as a withdrawal accepted here and refused on their own Edge.",
        "operationId" : "register",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RegisterBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Registered and resolved",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeRegistrationResult"
                }
              }
            }
          },
          "400" : {
            "description" : "KEY_SOURCE_MISMATCH — a pushed address does not derive from the registered key. Nothing was written",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeRegistrationResult"
                }
              }
            }
          },
          "401" : {
            "description" : "UNAUTHORIZED, EDGE_SIGNATURE_INVALID, EDGE_SIGNATURE_SKEW or EDGE_NONCE_REPLAY",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeRegistrationResult"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/key-sources/{fingerprint}/purge" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Report that a key source's material has been removed",
        "description" : "Sent by `chainos-edge purge-key-source`. Every address this wallet made spendable goes back to watch-only, and **all of them go on being monitored** — the customer removed a key, not an address, and their end users will send to those addresses for years.\n\nIdempotent. A purge is run twice by an operator who is not sure the first landed, and by then the key material is already gone, so there is nothing they can check by trying it again.",
        "operationId" : "purge",
        "parameters" : [ {
          "name" : "fingerprint",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PurgeBody"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeKeySourceView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/heartbeat" : {
      "post" : {
        "tags" : [ "Edge" ],
        "summary" : "Heartbeat",
        "description" : "Used by followers, and by a leader whose stream is down. Also the stream-reconnect signal. Absence of heartbeats is the only way Cloud learns an Edge is unhealthy — it never probes.",
        "operationId" : "heartbeat",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/HeartbeatBody"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeHeartbeatResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/checkout/sessions" : {
      "post" : {
        "tags" : [ "Checkout" ],
        "summary" : "Start a checkout from a browser",
        "description" : "Called with `X-Publishable-Key` from an origin the merchant registered. Returns the address to pay and a `checkoutToken` for reading this session afterwards.\n\n**Merchants: this is the convenience path, not the recommended one.** The amount in this request comes from a browser, so it is a claim rather than a fact — the origin lock and the key's cap bound the upside only, and a buyer can ask for 0.01 against a 100.00 order. Both figures travel on the confirmation webhook so you can compare against your own order total, which is the only place the real total exists. Create sessions server-side with a secret key wherever you can.",
        "operationId" : "start",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BrowserSessionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Checkout started",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeStartedCheckout"
                }
              }
            }
          },
          "403" : {
            "description" : "ORIGIN_NOT_REGISTERED, AMOUNT_CAP_EXCEEDED, or the chain or asset is outside what this key permits",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeStartedCheckout"
                }
              }
            }
          },
          "429" : {
            "description" : "RATE_LIMIT_EXCEEDED — per device and per key. Starting a checkout derives an address and burns an index that is never reused, so this verb is metered far more tightly than reads.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeStartedCheckout"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/checkout/links/{slug}/donate" : {
      "post" : {
        "tags" : [ "Checkout" ],
        "summary" : "Get your own address on a donation link",
        "description" : "For a `per_payer` donation link, which is the default: the donor gets their own derived address, so their gift can be attributed and receipted with their name on it. Every payment still accumulates toward the link's total.\n\nRefused on a link that publishes a single shared address — that address is already on the page, and deriving another would take money somewhere the link's total does not count it.",
        "operationId" : "donate",
        "parameters" : [ {
          "name" : "slug",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DonateRequest"
              }
            }
          }
        },
        "responses" : {
          "201" : {
            "description" : "Address issued",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeStartedCheckout"
                }
              }
            }
          },
          "409" : {
            "description" : "PAYMENT_CLOSED — the link is closed, paused, or has just met its threshold or closing date",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeStartedCheckout"
                }
              }
            }
          },
          "429" : {
            "description" : "RATE_LIMIT_EXCEEDED — per device. This derives an address.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeStartedCheckout"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/band" : {
      "post" : {
        "tags" : [ "Billing" ],
        "summary" : "Change the capacity band",
        "description" : "Owner only, and gated on a second factor. A downgrade below the current active address count is refused, because it would leave addresses above the cap in an undefined state.",
        "operationId" : "changeBand",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BandChangeRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/balances/batch" : {
      "post" : {
        "tags" : [ "Balances" ],
        "summary" : "Batch balance query",
        "description" : "Up to 100 queries in one call. A failure on one chain is reported against that entry rather than failing the batch.",
        "operationId" : "batch",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BatchBalanceRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/auth/switch-org" : {
      "post" : {
        "tags" : [ "Authentication" ],
        "summary" : "Re-grant this session for another organization",
        "description" : "Narrows the session onto another tenant without re-authenticating. Answers 403 when the caller is not a member of it.",
        "operationId" : "switchOrg",
        "parameters" : [ {
          "name" : "chainos_refresh",
          "in" : "cookie",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SwitchOrgRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "A session scoped to the new tenant",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSessionResponse"
                }
              }
            }
          },
          "403" : {
            "description" : "FORBIDDEN — not a member of that organization",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSessionResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/auth/step-up" : {
      "post" : {
        "tags" : [ "Authentication" ],
        "summary" : "Get the URL for presenting a second factor",
        "operationId" : "stepUp",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/StepUpRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/auth/refresh" : {
      "post" : {
        "tags" : [ "Authentication" ],
        "summary" : "Exchange the refresh cookie for a new access token",
        "operationId" : "refresh",
        "parameters" : [ {
          "name" : "chainos_refresh",
          "in" : "cookie",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/auth/logout" : {
      "post" : {
        "tags" : [ "Authentication" ],
        "summary" : "Log out and revoke the refresh token",
        "description" : "Returns `endSessionUrl` when the session was federated; navigate there to end the identity provider's session too.",
        "operationId" : "logout",
        "parameters" : [ {
          "name" : "chainos_refresh",
          "in" : "cookie",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/addresses" : {
      "get" : {
        "tags" : [ "Addresses" ],
        "summary" : "List addresses",
        "description" : "Filterable by chain, userRef and tag. Archived addresses are excluded unless status=archived is requested.",
        "operationId" : "list_10",
        "parameters" : [ {
          "name" : "chain",
          "in" : "query",
          "description" : "btc | eth | bsc | polygon | avax | base | tron | sol | xrp | xlm",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "userRef",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "tag",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "active"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAddressPage"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Addresses" ],
        "summary" : "Generate a deposit address",
        "description" : "Derives a new HD address for the given chain from the account's registered extended public key. For Solana and Stellar, allocates from the Edge-supplied address pool instead, because Ed25519 has no public-key-only child derivation and no extended public key exists for either. Allocation on those two needs a live Edge once their pool is exhausted; the pools are independent of each other.\n\nXRP and Stellar additionally return `reserveDrops`, the minimum a *first* deposit must carry: 1,000,000 drops (1 XRP) and 10,000,000 stroops (1 XLM). Neither account exists on its ledger until it is funded, so an address that validates is not yet usable. Stellar is the stricter of the two — an XRP payment of at least the reserve creates the account, while a plain Stellar `payment` to an address that does not exist fails whatever it carries and the sender must use `create_account`. ChainOS does not pre-fund either.\n\nXRP also returns `destinationTag`, which is always null: a unique address is issued per customer rather than a tag against one shared account.",
        "operationId" : "create_9",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreateAddressRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Address created",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAddressView"
                }
              }
            }
          },
          "403" : {
            "description" : "CHAIN_NOT_READY, ADDRESS_LIMIT_EXCEEDED or TIER_FEATURE_LOCKED",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAddressView"
                }
              }
            }
          },
          "423" : {
            "description" : "EDGE_OFFLINE — the address pool is exhausted and no Edge is connected to replenish it",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAddressView"
                }
              }
            }
          },
          "503" : {
            "description" : "CHAIN_UNAVAILABLE — no RPC endpoint configured for this chain",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAddressView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/addresses/{address}/trustlines" : {
      "post" : {
        "tags" : [ "Addresses" ],
        "summary" : "Build an unsigned asset opt-in for an address",
        "description" : "Stellar only. A Stellar account cannot hold a non-native asset such as USDC until it has signed a `changeTrust` operation for that asset, and only the account itself can sign it — unlike Solana, where the sender creates and pays for the recipient's token account.\n\nThe account must already exist on-ledger, which means it must already have been funded: a Stellar account is created by its first incoming payment. It must also hold one further base reserve (0.5 XLM) for the new subentry, plus the fee — an account funded with exactly the 1 XLM minimum does not, and gets INSUFFICIENT_RESERVE saying so.\n\nReturns an unsigned payload that travels the ordinary signing path.",
        "operationId" : "create_10",
        "parameters" : [ {
          "name" : "address",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TrustlineRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "description" : "Unsigned opt-in built",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "400" : {
            "description" : "INVALID_INPUT — unknown asset, or a chain with no opt-in",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "409" : {
            "description" : "CONFLICT — the address already holds this trustline",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "422" : {
            "description" : "INSUFFICIENT_RESERVE — the account cannot fund the subentry",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "503" : {
            "description" : "CHAIN_UNAVAILABLE",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/addresses/{addressId}/unarchive" : {
      "post" : {
        "tags" : [ "Addresses" ],
        "summary" : "Restore an archived address",
        "operationId" : "unarchive",
        "parameters" : [ {
          "name" : "addressId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAddressView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/addresses/{addressId}/archive" : {
      "post" : {
        "tags" : [ "Addresses" ],
        "summary" : "Archive an address",
        "description" : "Stops monitoring and frees band capacity from the next daily snapshot.\n\nFunds sent to an archived address after this point are not detected. This is the only operation that stops an address being monitored — a mnemonic rotation or an expired licence never does.",
        "operationId" : "archive",
        "parameters" : [ {
          "name" : "addressId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAddressView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/addresses/validate" : {
      "post" : {
        "tags" : [ "Addresses" ],
        "summary" : "Validate an address",
        "description" : "Checks format and checksum without touching the chain. An Ethereum address fails Bitcoin validation and vice versa.",
        "operationId" : "validate_1",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ValidateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/wallets/{walletId}" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "One treasury wallet",
        "operationId" : "get_3",
        "parameters" : [ {
          "name" : "walletId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeWalletView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Treasury" ],
        "summary" : "Archive a treasury wallet",
        "description" : "Refused while any sweep policy still sweeps into it. A policy whose destination vanished fails every cycle and reports it as a chain error, which is the hardest possible way to find out about a change somebody made on purpose.",
        "operationId" : "archive_1",
        "parameters" : [ {
          "name" : "walletId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "INVALID_INPUT — sweep policies still point at this wallet",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeWalletView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "patch" : {
        "tags" : [ "Treasury" ],
        "summary" : "Rename a wallet or change its alert threshold",
        "description" : "The address, the chain and the derivation cannot change. A wallet that could be repointed is a wallet whose history stops meaning anything — create another one instead.",
        "operationId" : "update_3",
        "parameters" : [ {
          "name" : "walletId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateWallet"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeWalletView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/unsigned/{unsignedId}" : {
      "get" : {
        "tags" : [ "Transactions" ],
        "summary" : "Fetch one unsigned transaction",
        "operationId" : "getUnsigned",
        "parameters" : [ {
          "name" : "unsignedId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUnsignedView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "patch" : {
        "tags" : [ "Transactions" ],
        "summary" : "Abandon an unsigned transaction",
        "operationId" : "cancel_3",
        "parameters" : [ {
          "name" : "unsignedId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CancelRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/merchants/{merchantId}" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "Fetch one merchant",
        "operationId" : "getMerchant",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "No such merchant in this account and environment. 404 rather than 403 for another account's: a 403 would confirm it exists.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMerchantView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "patch" : {
        "tags" : [ "Payments" ],
        "summary" : "Change a merchant's details",
        "description" : "Neither `slug` nor `externalRef` can be changed — both are identifiers other systems have stored. Mint a new merchant if one of them is wrong.",
        "operationId" : "updateMerchant",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateMerchantRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMerchantView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/merchants/{merchantId}/status" : {
      "patch" : {
        "tags" : [ "Payments" ],
        "summary" : "Suspend, close or reactivate a merchant",
        "description" : "Suspension stops **new** checkouts and nothing else. Every session already open against this merchant stays payable to the end of its monitoring window — a payer who broadcast a transaction ninety seconds before you suspended them has sent real money, and something still has to credit it. Refusing it would strand those funds at an address nothing reconciles.\n\nThere is no delete. A merchant that has taken a payment cannot be removed: the receipts that say what it was owed outlive it, because a merchant disputing a final balance needs those rows more than you need a tidy table.",
        "operationId" : "setMerchantStatus",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/StatusRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "400" : {
            "description" : "INVALID_INPUT — a status outside active | suspended | closed",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMerchantView"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/links/{linkId}" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "Fetch one payment link",
        "operationId" : "get_4",
        "parameters" : [ {
          "name" : "linkId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLinkView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "patch" : {
        "tags" : [ "Payments" ],
        "summary" : "Edit a payment link",
        "description" : "Presentation, bounds and closing conditions only. Chain, asset, mode, address mode and a fixed amount cannot be changed, because each of them is either printed on a page somebody has already been sent or baked into an address that has already been derived — and changing the amount on a link a customer is looking at is how a customer pays the wrong figure. Close it and make another.\n\nExtending `closesAt` also moves the deadlines on the address behind a shared link, so the extension actually takes payments rather than recording them as late.",
        "operationId" : "update_4",
        "parameters" : [ {
          "name" : "linkId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateLinkRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeLinkView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/keys/{keyId}" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "Fetch one payment key",
        "operationId" : "get_5",
        "parameters" : [ {
          "name" : "keyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeKeyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Payments" ],
        "summary" : "Revoke a payment key",
        "description" : "Immediate and irreversible. The key stops working on the next request, and any page carrying it stops being able to start a checkout. This is the escape hatch for a leak.",
        "operationId" : "revoke",
        "parameters" : [ {
          "name" : "keyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "204" : {
            "description" : "Revoked"
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "patch" : {
        "tags" : [ "Payments" ],
        "summary" : "Change what a publishable key may do",
        "description" : "The key itself does not change, so a deployed page keeps working. Narrowing the origin list takes effect on the next request.",
        "operationId" : "update_5",
        "parameters" : [ {
          "name" : "keyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateKeyRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeKeyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{accountId}" : {
      "patch" : {
        "tags" : [ "Organizations" ],
        "summary" : "Rename an organization",
        "operationId" : "rename",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RenameRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeOrganizationView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/key-sources/{keySourceId}" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "One key source",
        "operationId" : "keySource",
        "parameters" : [ {
          "name" : "keySourceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeKeySourceView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Migration" ],
        "summary" : "Record that a key source's material is gone",
        "description" : "Every address this wallet made spendable goes back to watch-only, and **all of them go on being monitored**. That is deliberate and it is not a limitation: you removed a key, not an address, and your end users will go on sending to those addresses for years. Deposits are still detected, still credited and still webhooked exactly as before. What changes is that a withdrawal from one is refused with `ADDRESS_WATCH_ONLY` here, rather than being accepted, built, and refused at an Edge that no longer holds the key.\n\nThe source, its keys and its address list are kept. A purge that erased them would leave a demoted address with nothing to explain it, which is the question somebody asks six months later.\n\nPurging here is the record; **removing the key material is something you do on your Edge.** `chainos-edge purge-key-source` does both.\n\nIdempotent.",
        "operationId" : "purge_1",
        "parameters" : [ {
          "name" : "keySourceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PurgeRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeKeySourceView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "patch" : {
        "tags" : [ "Migration" ],
        "summary" : "Rename a key source",
        "description" : "The one field of a key source a customer may change. The fingerprint, the keys and the addresses are what the Edge reported and are not editable here — a label that disagreed with them would be the only thing anybody reads.",
        "operationId" : "relabel",
        "parameters" : [ {
          "name" : "keySourceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/RelabelRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeKeySourceView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/addresses/{addressId}" : {
      "get" : {
        "tags" : [ "Addresses" ],
        "summary" : "Fetch one address",
        "operationId" : "get_6",
        "parameters" : [ {
          "name" : "addressId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "NOT_FOUND — also returned for another account's address, so that a 404 never confirms a resource exists",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAddressView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "patch" : {
        "tags" : [ "Addresses" ],
        "summary" : "Update an address's tag or label",
        "operationId" : "update_6",
        "parameters" : [ {
          "name" : "addressId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateAddressRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeAddressView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks/{webhookId}/deliveries" : {
      "get" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Delivery history",
        "description" : "One row per attempt, with status code and duration.",
        "operationId" : "deliveries",
        "parameters" : [ {
          "name" : "webhookId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedDeliveryView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks/deliveries/dead-letters" : {
      "get" : {
        "tags" : [ "Webhooks" ],
        "summary" : "Dead-lettered deliveries across all webhooks",
        "operationId" : "deadLetters",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedDeliveryView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/wallets/{walletId}/balances" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Live balances on a treasury wallet",
        "description" : "The native coin and every catalogue token on that chain with a non-zero balance — not only the tokens this account sweeps. A treasury figure that omitted a token because no policy mentions it would be a figure a customer reconciles against and comes up short on.",
        "operationId" : "walletBalances",
        "parameters" : [ {
          "name" : "walletId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "503" : {
            "description" : "CHAIN_UNAVAILABLE — the provider is unreachable. A balance is never reported as zero because of a provider failure.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeWalletBalances"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/tokens" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Supported tokens",
        "description" : "Every token in the catalogue with its per-chain deployment status. A chain appears under `deployments` or under `unsupportedChains`, never neither — a silent gap is how a customer builds around a token that is not actually monitored there.",
        "operationId" : "tokens",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/tokens/{symbol}" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "One token",
        "description" : "Deployments, deliberate exclusions with their reasons, and routes.",
        "operationId" : "token",
        "parameters" : [ {
          "name" : "symbol",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/sweeps/jobs" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Sweep job history",
        "description" : "Without the per-address breakdown — twenty jobs of two hundred operations is four thousand rows nobody asked for. Fetch one job for that.",
        "operationId" : "jobs",
        "parameters" : [ {
          "name" : "chain",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          }
        }, {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 20
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeJobPage"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/sweeps/jobs/{jobId}" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "One job, with every address it touched",
        "description" : "`status: PARTIAL` is a normal outcome, not an error. A two-hundred-address job where a hundred and eighty succeed and twenty run short of gas is an ordinary day: the failures are retried on the next cycle, and the `operations` array says which addresses and why. Treating PARTIAL as a failure would hide the hundred and eighty that moved.",
        "operationId" : "job",
        "parameters" : [ {
          "name" : "jobId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeJobView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/routes" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "The route matrix",
        "description" : "Which chains a token can be bridged between, and the reason for every pair that is missing. Rendered as a grid in the portal.",
        "operationId" : "routes",
        "parameters" : [ {
          "name" : "token",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/routes/check" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Is this route supported, and if not why",
        "description" : "Answers with the specific reason and the alternatives from the same source chain. A caller hitting an unsupported route is usually solving a problem that another route also solves.",
        "operationId" : "check",
        "parameters" : [ {
          "name" : "token",
          "in" : "query",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "from",
          "in" : "query",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          }
        }, {
          "name" : "to",
          "in" : "query",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/pipelines/{pipelineId}/flow" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "The flow diagram's data",
        "description" : "Left to right, in the order the money travels: deposits, the sweep, the bridge, the destination treasury.\n\n`state: excluded` is the one to render distinctly. It is a source chain that cannot reach the destination, and it appears **in its place on the diagram** with its reason beside it rather than being absent — a customer who configured a chain and then cannot find it on the diagram has a worse problem than one who can see why it is greyed out.\n\nIts own endpoint rather than a field on the pipeline, because the configuration changes when somebody edits it and this changes every time money moves.",
        "operationId" : "flow",
        "parameters" : [ {
          "name" : "pipelineId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeFlow"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/funding-wallets/{walletId}" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "One funding wallet",
        "operationId" : "fundingWallet",
        "parameters" : [ {
          "name" : "walletId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeFundingWalletView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/bridges/transfers/{transferId}" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "One transfer, with both legs",
        "description" : "`recommendedAction` is the field to show a person when something has gone wrong. A stalled bridge is alarming and the instinct is to retry, which would burn a second amount — so the field says plainly whether the message is still valid, and what to do instead.\n\nThe three failure states are not interchangeable. `SOURCE_FAILED` means the burn never landed and **no funds were at risk**. `STALLED_ATTESTATION` and `STALLED_RELAY` mean it did, and the money exists only as a claim.",
        "operationId" : "transfer",
        "parameters" : [ {
          "name" : "transferId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTransferView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/treasury/bridges/in-flight" : {
      "get" : {
        "tags" : [ "Treasury" ],
        "summary" : "Current in-flight exposure across every token",
        "description" : "How much of your money is burned and not yet minted, right now.\n\n`oldestInFlightSeconds` is the number to alert on. A total says how much is at risk; that one says whether something is wrong — and it is the difference between a busy afternoon and an attestation service that has stopped.\n\n`stalled` lists the transfers past their provider's own threshold, each with the action to take. It is normally empty.",
        "operationId" : "inFlight",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeExposure"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/{transactionId}" : {
      "get" : {
        "tags" : [ "Transactions" ],
        "summary" : "Fetch one transaction",
        "operationId" : "get_7",
        "parameters" : [ {
          "name" : "transactionId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeTransactionView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/unsigned" : {
      "get" : {
        "tags" : [ "Transactions" ],
        "summary" : "List unsigned transactions",
        "operationId" : "listUnsigned",
        "parameters" : [ {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedUnsignedView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/rotations" : {
      "get" : {
        "tags" : [ "Edge settings" ],
        "summary" : "List identity rotations",
        "description" : "A pending rotation blocks address generation on the affected chains. Existing addresses stay monitored either way.",
        "operationId" : "listRotations",
        "parameters" : [ {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedRotationView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/keys" : {
      "get" : {
        "tags" : [ "Settings" ],
        "summary" : "List Ziklag API keys",
        "description" : "Only previews are ever returned. The raw value is shown once, at creation, and cannot be recovered afterwards.",
        "operationId" : "listKeys",
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedApiKeyView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/edge-setup" : {
      "get" : {
        "tags" : [ "Edge settings" ],
        "summary" : "Generated docker-compose for this account's Edge",
        "description" : "Shown in Settings → Edge Readiness while the indicators are red, with the account's API key already filled in.",
        "operationId" : "edgeSetup",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/treasury/scenarios" : {
      "get" : {
        "tags" : [ "Sandbox" ],
        "summary" : "The scenarios every customer should run before going live",
        "description" : "Each corresponds to a production incident that will eventually happen. They are listed here rather than only in the documentation so the portal can offer them as one click each.\n\nThe two that matter most are the stalled and expired attestations. Both put funds in the state where they exist in neither place, and the instinct when it happens for real is to retry — which burns a second amount. Rehearsing it is how a team learns that before it costs them.",
        "operationId" : "scenarios",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListScenario"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/status" : {
      "get" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Sandbox status",
        "operationId" : "status",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/sessions/{sessionId}" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "Fetch one checkout session",
        "operationId" : "get_8",
        "parameters" : [ {
          "name" : "sessionId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "NOT_FOUND — also returned for another account's session, so the response cannot be used to learn whether an id exists elsewhere",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeSessionView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/sessions/{sessionId}/receipts" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "List the on-chain deposits against a checkout session",
        "description" : "One row per transaction that arrived at this session's address, oldest first. This is where a status that looks wrong is explained: an `underpaid` session with two receipts was paid in two parts, while one with a single receipt whose `assetMatch` is false received the wrong token — the same status, a different remedy.\n\nA receipt with `counted: false` is recorded and deliberately excluded from the total. It is still on chain and still the payer's, so it is shown rather than dropped.",
        "operationId" : "receipts",
        "parameters" : [ {
          "name" : "sessionId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "NOT_FOUND — also returned for another account's session, rather than an empty list, which would read as a payment that took nothing",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListReceiptView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/readiness" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "Which chains can take a payment right now",
        "description" : "Read this before you offer a chain, not after a customer has picked one. A gateway that answers 403 at the moment somebody presses Pay is a lost sale with nothing on any screen to explain it, and the usual cause is on your side — most often an Edge identity rotation waiting for an owner to approve it, which is obvious in the portal and invisible from a checkout page.\n\n`available: false` always carries a `reason` naming the remedy.\n\n`nativeMinimum` is the least a payment in the chain's own asset may be for collecting it to be worth doing. It is exact for a native payment and **null for tokens** — the fee comes back in ETH or BNB and your amount is in USDT, and comparing them needs a rate that is deliberately not on this path. `estimatedSweepFee` is given instead, so you can set a floor on your links in the asset you price in.\n\nOnly the seven chains checkout supports appear. Solana, Stellar and XRP are absent rather than unavailable, because they are not supported here at all and that is a different answer.",
        "operationId" : "readiness",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeCheckoutReadiness"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/merchants/{merchantId}/ledger" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "This merchant's statement",
        "description" : "Newest first. Every line is signed: positive increases what you owe them, negative reduces it.",
        "operationId" : "merchantStatement",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "type",
          "in" : "query",
          "description" : "capture | fee | payout | adjustment | reversal",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedEntryView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/merchants/{merchantId}/balances" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "What this merchant is owed",
        "description" : "One figure per chain and asset, never a single total: USDT on BSC and ETH are not addable, and the rate that would add them is deliberately not on any path in this product.\n\nA balance can be negative — a refund after a payout has gone out leaves a real one, and reporting it as zero would hide the discrepancy in the one place somebody would look for it.",
        "operationId" : "merchantBalances",
        "parameters" : [ {
          "name" : "merchantId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListBalanceView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/invoices" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "List invoices",
        "description" : "Newest first.",
        "operationId" : "list_11",
        "parameters" : [ {
          "name" : "sessionId",
          "in" : "query",
          "description" : "Narrow to one checkout session. A session has at most one invoice, and an accumulating donation address has none at all.",
          "required" : false,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeInvoicePage"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/payments/invoices/{invoiceId}" : {
      "get" : {
        "tags" : [ "Payments" ],
        "summary" : "Fetch one invoice",
        "operationId" : "get_9",
        "parameters" : [ {
          "name" : "invoiceId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeInvoiceView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{accountId}/members" : {
      "get" : {
        "tags" : [ "Organizations" ],
        "summary" : "List members, including people invited but not yet joined",
        "operationId" : "membersOf",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedMemberView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/scans/{scanId}" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "Fetch one discovery scan",
        "description" : "Poll this for progress. `truncated` is worth reading separately from the count: a scan that stopped at the gap limit found the end of your wallet, and one that stopped at the scan ceiling ran out of permission — only the second means addresses were probably missed.",
        "operationId" : "scan",
        "parameters" : [ {
          "name" : "scanId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeScanView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/scans/{scanId}/addresses" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "What a scan found",
        "operationId" : "scanResults",
        "parameters" : [ {
          "name" : "scanId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 100
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedDiscoveredView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "Fetch one migration project",
        "operationId" : "get_10",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeProjectView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Migration" ],
        "summary" : "Abandon a migration project",
        "description" : "Marks the project abandoned. It is not deleted: the assessment is the record of a conversation, and a customer who abandons a migration in March and asks in June why they were told Case F is owed the answer.\n\nAn **active** project cannot be abandoned — its addresses are live and monitored, and abandoning it would leave them with nothing explaining where they came from. Roll the import back instead.",
        "operationId" : "abandon",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AbandonRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/scans" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "List discovery scans for a project",
        "operationId" : "scans",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedScanView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/reconciliation" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "Export what this project adopted",
        "description" : "Every address this project brought across, as CSV, with the derivation path, your own reference and whether anything can sign for it.\n\nCSV rather than JSON on purpose: you are reconciling this in a spreadsheet next to an export from the system you are leaving, and handing you JSON would hand you a conversion step in the middle of the one task this file exists for.",
        "operationId" : "reconciliationExport",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "text/csv" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/observe" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "How the observation is going",
        "description" : "What has been adopted, what has been recorded on it, and whether cutover is available.\n\n`depositsObserved` is the number to reconcile against your own system, and the whole reason observe mode exists. `historicalRecorded` is the count of transactions that predate your import: recorded, queryable, and never announced.",
        "operationId" : "observe",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeObserveStatus"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/export" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "Export a migration project",
        "description" : "Every address the project adopted, in whichever of the four accepted import formats you ask for — so an export re-imported into a fresh project produces the same book.\n\nWorth saying plainly: this exists so that leaving is possible. There is no lock-in here to protect, because there is nothing we hold that you do not — the keys were always yours, and this is the addresses.\n\nNo key material, in either direction. Imports refuse it and exports cannot produce it, because ChainOS has never held any.",
        "operationId" : "export",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "format",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "CSV",
            "enum" : [ "CSV", "JSONL", "XPUB", "DESCRIPTOR" ]
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK"
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/export/plan" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "What an export would contain",
        "description" : "Row count and per-chain breakdown, plus whether the requested format can express this project at all — asked before a download starts, so a refusal arrives as a sentence rather than as an empty file.\n\n`chainos-xpub-v1` and output descriptors are unavailable for a project whose addresses came from a key source your Edge holds. ChainOS has never held that extended public key — only a fingerprint and the addresses it produced — so the file cannot be written. CSV and JSONL carry every address individually and are always available.",
        "operationId" : "exportPlan",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "format",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "CSV",
            "enum" : [ "CSV", "JSONL", "XPUB", "DESCRIPTOR" ]
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeExportPlan"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/projects/{projectId}/capacity" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "What adopting this project would cost",
        "description" : "The capacity and billing consequence of adopting everything discovered so far, **before** you commit to it. A customer who finds out their band was exceeded by an import they have already committed has been charged for a decision nobody put to them.\n\nMeasured against the band alone, not against any temporary capacity Ziklag has granted you — a grant expires, and a projection leaning on one would promise capacity that gets taken away.",
        "operationId" : "capacity",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeCapacityProjection"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/key-sources" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "The wallets you already had",
        "description" : "Every key source registered from your Edge, newest first. A key source is a wallet that existed before ChainOS: Cloud holds its fingerprint, its extended **public** keys and the addresses it covers, and never any key material.\n\n**Purged sources stay listed.** A purged source is the record of what a now-watch-only address used to be spendable through, and hiding it makes that question unanswerable from the screen where it gets asked.",
        "operationId" : "keySources",
        "parameters" : [ {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedKeySourceView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/imports/{batchId}" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "Fetch one import batch",
        "operationId" : "getBatch",
        "parameters" : [ {
          "name" : "batchId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeBatchView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/imports/{batchId}/rows" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "The rows of an import batch",
        "description" : "Every row the file produced, whether it passed or not, in the order they appeared in your file — `rowNumber` is the line number in your own file, so an error naming line 4,017 points at line 4,017.\n\nFilter with `?status=error` to get just the failures, or `warning` for the rows that will import with a finding attached.",
        "operationId" : "rows",
        "parameters" : [ {
          "name" : "batchId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedRowView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/imports/{batchId}/dry-run" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "The current dry run",
        "description" : "The last validation's report, without re-running it. Its `dryRunId` is the one a commit has to quote.",
        "operationId" : "dryRun",
        "parameters" : [ {
          "name" : "batchId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeDryRun"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/consolidations" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "Consolidation plans for a project",
        "operationId" : "list_12",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedPlanView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/consolidations/{planId}" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "One plan, with every movement",
        "description" : "`status: PARTIAL` is a normal outcome at scale, not an error. A ten-thousand-address consolidation where 9,700 land and 300 run short of gas is an ordinary first attempt: retry targets only the failures.",
        "operationId" : "get_11",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePlanView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/consolidations/{planId}/prepare" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "Export the unsigned batch for an external signer",
        "description" : "JSONL, one movement per line, each carrying the unsigned payload **and** a `humanReadable` sentence saying what it does in the units the asset is quoted in.\n\nThat sentence is not decoration. The person approving a batch of four thousand transfers at a custodian works from a screen, and nobody reads RLP — a signer who has not understood what they are approving is the failure this export exists to prevent.\n\nBitcoin movements are refused rather than exported: ChainOS does not yet build a signable PSBT, and a file that a signer accepts, signs and returns as nothing is worse than a clear refusal.",
        "operationId" : "prepare",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "400" : {
            "description" : "INVALID_INPUT — this plan is on the Edge signing path, or it includes Bitcoin movements",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "format" : "binary"
                }
              }
            }
          },
          "409" : {
            "description" : "CONSOLIDATION_NOT_READY — nothing in this plan is waiting for a signature",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "format" : "binary"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/consolidations/{planId}/operations" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "The movements in a plan, paged",
        "description" : "Filterable by `status`. A ten-thousand-movement plan is not a response body, and the plan itself carries the counts.",
        "operationId" : "operations",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "page",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "size",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 100
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePagedOperationView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/migration/consolidations/{planId}/mapping" : {
      "get" : {
        "tags" : [ "Migration" ],
        "summary" : "The old → new address mapping",
        "description" : "CSV by default, `?format=jsonl` for one object per line. One row per movement, carrying the `userRef` that travelled across — which is the whole point (MG §11.3): your own system is keyed to it, and this file is what you update from.\n\nAvailable from the moment the plan exists, not only when it completes. The mapping is fixed at planning time precisely so you can stage your side of the change before the funds move.",
        "operationId" : "mapping",
        "parameters" : [ {
          "name" : "planId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "format",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string",
                  "format" : "binary"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/fees/{chain}/estimate" : {
      "get" : {
        "tags" : [ "Balances" ],
        "summary" : "Fee estimate",
        "description" : "Returns the total alongside a chain-specific breakdown: gas units and base fee on EVM chains, sat/vByte and vBytes on Bitcoin, energy and bandwidth on TRON, the per-operation charged fee and operation count on Stellar, floored at the 100-stroop base fee, and — separately — the associated token account rent on Solana, which is a real cost rather than an inflated fee.",
        "operationId" : "estimateFee",
        "parameters" : [ {
          "name" : "chain",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "from",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "to",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "amount",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "tokenContract",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "priority",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "medium"
          }
        }, {
          "name" : "inputCount",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "outputCount",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/status" : {
      "get" : {
        "tags" : [ "Edge" ],
        "summary" : "Account-level Edge status",
        "operationId" : "status_1",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/sessions" : {
      "get" : {
        "tags" : [ "Edge" ],
        "summary" : "Open Edge sessions",
        "description" : "Shows role, lease epoch, version, outbox mode and pod hint. Ended sessions are reaped after an hour so the list reflects the running fleet rather than an accumulating history.",
        "operationId" : "sessions",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListSessionStatus"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/readiness" : {
      "get" : {
        "tags" : [ "Edge" ],
        "summary" : "Per-chain readiness and the current session fleet",
        "description" : "Read by the portal every 15 seconds and by the Edge setup flow's test-connection button.",
        "operationId" : "readiness_1",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeReadiness"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/edge/gas-tanks" : {
      "get" : {
        "tags" : [ "Edge" ],
        "summary" : "Gas tank addresses and balances",
        "description" : "What to fund, and what each tank currently holds. Fees are paid by the sending address, so a tank is only required for autonomous operations; an unfunded tank does not block deposits or address generation.",
        "operationId" : "gasTanks",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListGasTankView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/checkout/sessions/{reference}" : {
      "get" : {
        "tags" : [ "Checkout" ],
        "summary" : "Read a checkout",
        "description" : "Called with `X-Checkout-Token`. Poll this while the payer has the page open; `serverTime` is here so the countdown can be rendered against our clock rather than the device's.\n\n**This is not proof of payment for a merchant.** It is what the page renders. Fulfilment is decided from the `payment.confirmed` webhook, or read back with a secret key.",
        "operationId" : "read",
        "parameters" : [ {
          "name" : "reference",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "NOT_FOUND — a wrong or expired token, and also a token that is valid for a different checkout than the one named in the path. Deliberately not 401: a 401 would confirm the checkout exists.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeCheckoutView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/checkout/links/{slug}" : {
      "get" : {
        "tags" : [ "Checkout" ],
        "summary" : "Read a payment link's page",
        "description" : "Public — a visitor arrives with nothing but the URL. Returns the page's content and, on a link that publishes one address, the address itself.\n\nA **paused** link answers exactly as an unknown one does. Telling them apart would let a stranger discover which slugs exist, which is the whole of what an enumeration of this endpoint is worth.",
        "operationId" : "link",
        "parameters" : [ {
          "name" : "slug",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "NOT_FOUND — unknown or paused",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopePublicLinkView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/checkout/invoices/{number}" : {
      "get" : {
        "tags" : [ "Checkout" ],
        "summary" : "Read your own receipt",
        "description" : "For the customer, using the token from the link in their emailed                     receipt, sent as `X-Invoice-Token`.\n\nA wrong token is **404**, not 401 — an invoice number is short enough                     to be worth guessing at, and an answer that distinguished \"no such                     invoice\" from \"wrong token\" would turn this into an oracle for which                     numbers exist.",
        "operationId" : "invoice",
        "parameters" : [ {
          "name" : "number",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "X-Invoice-Token",
          "in" : "header",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "NOT_FOUND — unknown number, or a token that does not match it",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeInvoiceView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/usage" : {
      "get" : {
        "tags" : [ "Billing" ],
        "summary" : "Usage this period",
        "description" : "Settled transactions against the included quota, accrued overage, and a straight-line projection from the run rate so far. Sweeps, sandbox activity, reads, address generation and webhook retries never count.",
        "operationId" : "usage",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeUsageView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/subscription" : {
      "get" : {
        "tags" : [ "Billing" ],
        "summary" : "Current subscription",
        "description" : "The account's capacity band and capability tier, with the included quota and overage rate that follow from the band.",
        "operationId" : "subscription",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/billing/bands" : {
      "get" : {
        "tags" : [ "Billing" ],
        "summary" : "Available capacity bands",
        "operationId" : "listBands",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeListBandView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/balances/{chain}/{address}" : {
      "get" : {
        "tags" : [ "Balances" ],
        "summary" : "Native balance",
        "description" : "`confirmed` is the whole balance and `available` is what can actually be spent. They differ on the three chains that immobilise part of a balance, and the difference is reported as `reserved`: XRP's base reserve (1 XRP, plus 0.2 XRP per owned ledger object), Solana's rent-exempt minimum (890,880 lamports), and Stellar's account minimum, which is `(2 + subentries) * 0.5 XLM` — 1 XLM for an account owning nothing and 0.5 XLM more for each trustline it holds. Read `available` for any spend decision; it is what makes a pre-flight correct without per-chain branching.\n\n`accountExists` is false when the account has not been created on-ledger, which an unfunded XRP or Stellar address has not. That is a zero balance, not an error.\n\nIn the **sandbox** the figure is derived from the ledger — incoming less outgoing across that address's simulated movements — because a sandbox address exists on no chain and a provider would answer zero for it however many deposits had been simulated. `reserved` is therefore always zero there, and no chain call is made.",
        "operationId" : "nativeBalance",
        "parameters" : [ {
          "name" : "chain",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "address",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "503" : {
            "description" : "CHAIN_UNAVAILABLE — the provider is unreachable. A balance is never reported as zero because of a provider failure.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/balances/{chain}/{address}/tokens/{contract}" : {
      "get" : {
        "tags" : [ "Balances" ],
        "summary" : "Token balance",
        "description" : "Decimals are resolved from configuration when the token is known, and otherwise fetched from the contract once and cached.\n\n`{contract}` is whatever identifies an asset on that chain: a contract address on the EVM chains and TRON, a mint address on Solana, and a `CODE:ISSUER` pair on Stellar, which has no contract addresses at all — the issuer is part of the asset's identity, so the pair is carried whole. A Stellar address holding no trustline for the asset returns a zero balance with `accountExists` false, exactly as a Solana address with no associated token account does, rather than an error.",
        "operationId" : "tokenBalance",
        "parameters" : [ {
          "name" : "chain",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "address",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "contract",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "decimals",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/auth/login" : {
      "get" : {
        "tags" : [ "Authentication" ],
        "summary" : "Start a single sign-on flow",
        "description" : "Redirects the browser to the identity provider for authorization-code with PKCE. A top-level navigation, not a fetch: follow it, do not call it with XHR.",
        "operationId" : "beginLogin",
        "parameters" : [ {
          "name" : "returnTo",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "302" : {
            "description" : "Redirect to the identity provider"
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/auth/identity" : {
      "get" : {
        "tags" : [ "Authentication" ],
        "summary" : "What the identity provider says about this session",
        "description" : "Read-only. Credentials and second factors are the realm's; `accountConsoleUrl` is where they are changed.",
        "operationId" : "identity",
        "responses" : {
          "200" : {
            "description" : "The provider's view of this session",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeIdentityView"
                }
              }
            }
          },
          "403" : {
            "description" : "FORBIDDEN — an API key has no identity to describe",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeIdentityView"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/auth/callback" : {
      "get" : {
        "tags" : [ "Authentication" ],
        "summary" : "Finish a single sign-on flow",
        "operationId" : "callback",
        "parameters" : [ {
          "name" : "code",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "state",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "error",
          "in" : "query",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "chainos_oidc",
          "in" : "cookie",
          "required" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "302" : {
            "description" : "Redirect back into the portal"
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/portal/config.json" : {
      "get" : {
        "tags" : [ "Portal" ],
        "summary" : "Runtime configuration for the portal SPA",
        "description" : "Fetched before the app mounts. Contains no secrets and is served no-store so a redeploy is picked up on the next page load.",
        "operationId" : "portalConfig",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object",
                  "additionalProperties" : { }
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/settings/edge-keys/{keyId}" : {
      "delete" : {
        "tags" : [ "Edge settings" ],
        "summary" : "Revoke a local Edge API key",
        "description" : "Takes effect on every replica within one heartbeat interval.",
        "operationId" : "revoke_1",
        "parameters" : [ {
          "name" : "keyId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sandbox/reset" : {
      "delete" : {
        "tags" : [ "Sandbox" ],
        "summary" : "Reset the sandbox",
        "description" : "Deletes sandbox addresses, transactions and deliveries, and resets derivation indices. One click, no ceremony — the destructive-wipe gating applies to live only.",
        "operationId" : "reset",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    },
    "/v1/organizations/{accountId}/members/{userId}" : {
      "delete" : {
        "tags" : [ "Organizations" ],
        "summary" : "Remove a member",
        "operationId" : "remove",
        "parameters" : [ {
          "name" : "accountId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        }, {
          "name" : "userId",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string",
            "format" : "uuid"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EnvelopeMapStringObject"
                }
              }
            }
          },
          "400" : {
            "description" : "The request could not be understood. `success: false`, with `error.code` one of: `EDGE_VERSION_UNSUPPORTED`, `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_CHAIN`, `INVALID_INPUT`, `KEY_MATERIAL_REJECTED`, `KEY_SOURCE_MISMATCH`, `SIGNED_BATCH_REJECTED`, `TOKEN_NOT_BRIDGEABLE`, `TOKEN_NOT_ON_CHAIN`, `TOKEN_NOT_SUPPORTED`, `TOKEN_NOT_SWEEPABLE`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing, rejected or insufficient credentials. Also the response when a two-factor code is required and absent. `success: false`, with `error.code` one of: `EDGE_NONCE_REPLAY`, `EDGE_SIGNATURE_INVALID`, `EDGE_SIGNATURE_SKEW`, `UNAUTHORIZED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "403" : {
            "description" : "Authenticated, but not permitted — by role, subscription, capability tier, or because a chain is not ready to issue addresses. `success: false`, with `error.code` one of: `ACCOUNT_SUSPENDED`, `ADDRESS_LIMIT_EXCEEDED`, `AMOUNT_CAP_EXCEEDED`, `CHAIN_NOT_READY`, `COMPLIANCE_REJECTED`, `FORBIDDEN`, `IMPERSONATION_FORBIDDEN`, `IMPERSONATION_READ_ONLY`, `MERCHANT_NOT_ACTIVE`, `MERCHANT_SCOPE_VIOLATION`, `NO_SUBSCRIPTION`, `ORIGIN_NOT_REGISTERED`, `PAYMENT_SESSION_LIMIT_EXCEEDED`, `SANDBOX_ONLY`, `TIER_FEATURE_LOCKED`, `TOTP_REQUIRED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "404" : {
            "description" : "No such resource for this account. Cross-tenant reads return this rather than 403, so the response cannot be used to discover whether an identifier exists on another account. `success: false`, with `error.code` one of: `NOT_FOUND`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "429" : {
            "description" : "The account's rate limit for its capacity band. `Retry-After` carries the wait in seconds. `success: false`, with `error.code` one of: `RATE_LIMIT_EXCEEDED`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          },
          "500" : {
            "description" : "An unhandled failure. `meta.requestId` is what correlates it with a server log line — quote it in a report. `success: false`, with `error.code` one of: `INTERNAL_ERROR`.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorEnvelope"
                }
              }
            }
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "ErrorEnvelope" : {
        "description" : "The envelope every response uses, success or failure (§16). On an error `success` is false, `data` is null and `error` is populated.",
        "properties" : {
          "success" : {
            "default" : false
          },
          "data" : {
            "description" : "Null on every error response."
          },
          "error" : {
            "description" : "Absent on success.",
            "properties" : {
              "code" : {
                "description" : "A stable, machine-readable code. Branch on this, never on the message, which is free to change.",
                "enum" : [ "ACCOUNT_SUSPENDED", "ADDRESS_CONFLICT", "ADDRESS_IN_OBSERVE_MODE", "ADDRESS_LIMIT_EXCEEDED", "ADDRESS_WATCH_ONLY", "ALREADY_ENROLLED", "AMOUNT_CAP_EXCEEDED", "BRIDGE_NOT_READY", "CHAIN_NOT_READY", "CHAIN_REJECTED", "CHAIN_UNAVAILABLE", "COMPLIANCE_REJECTED", "CONFLICT", "CONSOLIDATION_NOT_READY", "CROSS_ENVIRONMENT_IDENTITY", "DESTINATION_NOT_READY", "DESTINATION_OPT_IN_REQUIRED", "DRY_RUN_STALE", "EDGE_NONCE_REPLAY", "EDGE_NOT_SYNCED", "EDGE_NO_LEADER", "EDGE_OFFLINE", "EDGE_OUTBOX_FULL", "EDGE_SIGNATURE_INVALID", "EDGE_SIGNATURE_SKEW", "EDGE_VERSION_UNSUPPORTED", "FEE_RATIO_EXCEEDED", "FORBIDDEN", "IDEMPOTENCY_CONFLICT", "IDENTITY_ROTATION_PENDING", "IMPERSONATION_FORBIDDEN", "IMPERSONATION_READ_ONLY", "IMPORT_NOT_READY", "IMPORT_TOO_LARGE", "INSUFFICIENT_FUNDS", "INSUFFICIENT_GAS", "INSUFFICIENT_RESERVE", "INTERNAL_ERROR", "INVALID_ADDRESS", "INVALID_AMOUNT", "INVALID_CHAIN", "INVALID_INPUT", "IN_FLIGHT_LIMIT_EXCEEDED", "KEY_MATERIAL_REJECTED", "KEY_SOURCE_MISMATCH", "KEY_SOURCE_PURGED", "LEASE_EPOCH_STALE", "LEASE_HELD", "MERCHANT_NOT_ACTIVE", "MERCHANT_SCOPE_VIOLATION", "NOT_FOUND", "NO_BRIDGE_ROUTE", "NO_SUBSCRIPTION", "ORIGIN_NOT_REGISTERED", "PAYLOAD_TOO_LARGE", "PAYMENT_CLOSED", "PAYMENT_SESSION_LIMIT_EXCEEDED", "POLICY_PAUSED", "PROVIDER_UNAVAILABLE", "RATE_LIMIT_EXCEEDED", "RESYNC_REQUIRED", "ROLLBACK_WINDOW_CLOSED", "SANDBOX_ONLY", "SIGNED_BATCH_REJECTED", "SWEEP_IN_PROGRESS", "TIER_FEATURE_LOCKED", "TOKEN_NOT_BRIDGEABLE", "TOKEN_NOT_ON_CHAIN", "TOKEN_NOT_SUPPORTED", "TOKEN_NOT_SWEEPABLE", "TOTP_REQUIRED", "UNAUTHORIZED", "UPSTREAM_UNAVAILABLE" ]
              },
              "message" : {
                "description" : "Human-readable, and safe to show an operator. Never contains a credential or key material."
              },
              "details" : {
                "description" : "Structured context, so a caller can act without parsing the message. INSUFFICIENT_FUNDS carries `asset`, `required`, `available` and `shortfall`; CHAIN_NOT_READY carries `chain` and `state`."
              }
            }
          },
          "meta" : {
            "properties" : {
              "requestId" : {
                "description" : "Correlates this response with a server log line."
              },
              "timestamp" : {
                "format" : "date-time"
              }
            }
          }
        }
      },
      "WebhookRequest" : {
        "type" : "object",
        "properties" : {
          "endpointUrl" : {
            "type" : "string",
            "minLength" : 1
          },
          "events" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "minItems" : 1
          },
          "chains" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "deliveryMode" : {
            "type" : "string"
          },
          "confirmationOverride" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "endpointUrl", "events" ]
      },
      "EnvelopeWebhookView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/WebhookView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "ErrorBody" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          },
          "details" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "WebhookView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "endpointUrl" : {
            "type" : "string"
          },
          "events" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "chains" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "deliveryMode" : {
            "type" : "string"
          },
          "confirmationOverride" : {
            "type" : "integer",
            "format" : "int32"
          },
          "active" : {
            "type" : "boolean"
          },
          "secretPreview" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "PolicyBody" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "token" : {
            "type" : "string"
          },
          "enabled" : {
            "type" : "boolean"
          },
          "triggerMode" : {
            "type" : "string",
            "enum" : [ "MANUAL", "THRESHOLD", "SCHEDULE", "THRESHOLD_AND_SCHEDULE" ]
          },
          "minAmount" : {
            "type" : "string"
          },
          "scheduleCron" : {
            "type" : "string"
          },
          "maxAddressesPerJob" : {
            "type" : "integer",
            "format" : "int32"
          },
          "treasuryWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "maxFeeRatioBps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dustFloor" : {
            "type" : "string"
          },
          "abortIfGasExceeds" : {
            "type" : "string"
          },
          "gasFundingMode" : {
            "type" : "string",
            "enum" : [ "SOURCE_PAYS", "FUNDING_WALLET" ]
          },
          "fundingWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "topUpMultiplier" : {
            "type" : "integer",
            "format" : "int32"
          },
          "retainGasFloat" : {
            "type" : "boolean"
          },
          "gasFloatMultiplier" : {
            "type" : "integer",
            "format" : "int32"
          },
          "requireConfirmedOnly" : {
            "type" : "boolean"
          },
          "maxConcurrentOperations" : {
            "type" : "integer",
            "format" : "int32"
          },
          "pauseOnConsecutiveFailures" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "chain" ]
      },
      "EnvelopePolicyView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PolicyView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PolicyView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "token" : {
            "type" : "string"
          },
          "enabled" : {
            "type" : "boolean"
          },
          "triggerMode" : {
            "type" : "string",
            "enum" : [ "MANUAL", "THRESHOLD", "SCHEDULE", "THRESHOLD_AND_SCHEDULE" ]
          },
          "minAmount" : {
            "type" : "string"
          },
          "scheduleCron" : {
            "type" : "string"
          },
          "maxAddressesPerJob" : {
            "type" : "integer",
            "format" : "int32"
          },
          "treasuryWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "treasuryAddress" : {
            "type" : "string"
          },
          "maxFeeRatioBps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dustFloor" : {
            "type" : "string"
          },
          "abortIfGasExceeds" : {
            "type" : "string"
          },
          "gasFundingMode" : {
            "type" : "string",
            "enum" : [ "SOURCE_PAYS", "FUNDING_WALLET" ]
          },
          "fundingWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "topUpMultiplier" : {
            "type" : "integer",
            "format" : "int32"
          },
          "retainGasFloat" : {
            "type" : "boolean"
          },
          "gasFloatMultiplier" : {
            "type" : "integer",
            "format" : "int32"
          },
          "requireConfirmedOnly" : {
            "type" : "boolean"
          },
          "maxConcurrentOperations" : {
            "type" : "integer",
            "format" : "int32"
          },
          "pauseOnConsecutiveFailures" : {
            "type" : "integer",
            "format" : "int32"
          },
          "consecutiveFailures" : {
            "type" : "integer",
            "format" : "int32"
          },
          "pausedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "pausedReason" : {
            "type" : "string"
          },
          "lastRunAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "PipelineBody" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "minLength" : 1
          },
          "token" : {
            "type" : "string",
            "minLength" : 1
          },
          "destinationChain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "destinationWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "bridgePolicyId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "sweepPolicyIds" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid"
            }
          },
          "enabled" : {
            "type" : "boolean"
          }
        },
        "required" : [ "destinationChain", "name", "token" ]
      },
      "EnvelopePipelineView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PipelineView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PipelineView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "name" : {
            "type" : "string"
          },
          "token" : {
            "type" : "string"
          },
          "destinationChain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "destinationWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "destinationAddress" : {
            "type" : "string"
          },
          "bridgePolicyId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "enabled" : {
            "type" : "boolean"
          },
          "sources" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Source"
            }
          },
          "warnings" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "lastRunAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "Source" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "sweepPolicyId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "supported" : {
            "type" : "boolean"
          },
          "unsupportedReason" : {
            "type" : "string"
          },
          "pendingSweeps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "treasuryBalance" : {
            "type" : "string"
          },
          "treasuryBalanceFormatted" : {
            "type" : "string"
          }
        }
      },
      "TwoFactorView" : {
        "type" : "object",
        "properties" : {
          "required" : {
            "type" : "boolean"
          },
          "graceDays" : {
            "type" : "integer",
            "format" : "int32",
            "maximum" : 365,
            "minimum" : 0
          },
          "enforceFrom" : {
            "type" : "string",
            "format" : "date-time"
          },
          "factors" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "pattern" : "otp|webauthn"
            }
          }
        }
      },
      "EnvelopeTwoFactorView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/TwoFactorView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "EnvelopeMapStringObject" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "object",
            "additionalProperties" : { }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "CreatedWebhook" : {
        "type" : "object",
        "properties" : {
          "webhook" : {
            "$ref" : "#/components/schemas/WebhookView"
          },
          "secret" : {
            "type" : "string"
          },
          "warning" : {
            "type" : "string"
          }
        }
      },
      "EnvelopeCreatedWebhook" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/CreatedWebhook"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "CreateWallet" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "source" : {
            "type" : "string",
            "enum" : [ "DERIVED", "EXTERNAL" ]
          },
          "address" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "alertThreshold" : {
            "type" : "string"
          }
        },
        "required" : [ "chain", "source" ]
      },
      "EnvelopeWalletView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/WalletView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "WalletView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "address" : {
            "type" : "string"
          },
          "source" : {
            "type" : "string",
            "enum" : [ "DERIVED", "EXTERNAL" ]
          },
          "derivationPath" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "alertThreshold" : {
            "type" : "string"
          },
          "active" : {
            "type" : "boolean"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "TokenRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "contractAddress" : {
            "type" : "string",
            "minLength" : 1
          },
          "symbol" : {
            "type" : "string",
            "minLength" : 1
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "note" : {
            "type" : "string"
          }
        },
        "required" : [ "chain", "contractAddress", "symbol" ]
      },
      "EnvelopeJobView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/JobView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "JobView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "policyId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "token" : {
            "type" : "string"
          },
          "triggerSource" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "PLANNED", "GAS_FUNDING", "SWEEPING", "CONFIRMING", "COMPLETED", "PARTIAL", "FAILED" ]
          },
          "plannedCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "completedCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "skippedCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "failedCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalSwept" : {
            "type" : "string"
          },
          "totalFees" : {
            "type" : "string"
          },
          "errorMessage" : {
            "type" : "string"
          },
          "startedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "completedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "operations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OperationView"
            }
          }
        }
      },
      "OperationView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "addressId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "address" : {
            "type" : "string"
          },
          "amount" : {
            "type" : "string"
          },
          "amountFormatted" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "PENDING", "GAS_REQUESTED", "GAS_CONFIRMED", "TX_PREPARED", "TX_SIGNED", "TX_BROADCAST", "TX_CONFIRMED", "COMPLETED", "FAILED", "EXPIRED", "SKIPPED_DUST", "SKIPPED_FEE_RATIO", "SKIPPED_RESERVE" ]
          },
          "skipReason" : {
            "type" : "string"
          },
          "gasTopUpTx" : {
            "type" : "string"
          },
          "sweepTx" : {
            "type" : "string"
          },
          "feePaid" : {
            "type" : "string"
          },
          "attempts" : {
            "type" : "integer",
            "format" : "int32"
          },
          "errorMessage" : {
            "type" : "string"
          },
          "completedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "PreviewBody" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "token" : {
            "type" : "string"
          },
          "treasuryWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "fundingWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "maxFeeRatioBps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dustFloor" : {
            "type" : "string"
          },
          "abortIfGasExceeds" : {
            "type" : "string"
          },
          "requireConfirmedOnly" : {
            "type" : "boolean"
          },
          "retainGasFloat" : {
            "type" : "boolean"
          },
          "maxAddressesPerJob" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "chain" ]
      },
      "EnvelopePreview" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/Preview"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "FundingOutlook" : {
        "type" : "object",
        "properties" : {
          "fundingWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "address" : {
            "type" : "string"
          },
          "balance" : {
            "type" : "string"
          },
          "balanceFormatted" : {
            "type" : "string"
          },
          "sweepsRemaining" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "Preview" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "token" : {
            "type" : "string"
          },
          "eligibleAddresses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalSweepable" : {
            "type" : "string"
          },
          "totalSweepableFormatted" : {
            "type" : "string"
          },
          "estimatedGasCost" : {
            "type" : "string"
          },
          "estimatedGasCostFormatted" : {
            "type" : "string"
          },
          "gasCurrency" : {
            "type" : "string"
          },
          "feeRatioBps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "gasTopUpsRequired" : {
            "type" : "integer",
            "format" : "int32"
          },
          "skipped" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SkipGroup"
            }
          },
          "wouldProceed" : {
            "type" : "boolean"
          },
          "blockedReason" : {
            "type" : "string"
          },
          "funding" : {
            "$ref" : "#/components/schemas/FundingOutlook"
          }
        }
      },
      "SkipGroup" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string",
            "enum" : [ "PENDING", "GAS_REQUESTED", "GAS_CONFIRMED", "TX_PREPARED", "TX_SIGNED", "TX_BROADCAST", "TX_CONFIRMED", "COMPLETED", "FAILED", "EXPIRED", "SKIPPED_DUST", "SKIPPED_FEE_RATIO", "SKIPPED_RESERVE" ]
          },
          "count" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalValue" : {
            "type" : "string"
          }
        }
      },
      "PauseBody" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string"
          }
        }
      },
      "EnvelopeRunResult" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/RunResult"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "RunResult" : {
        "type" : "object",
        "properties" : {
          "pipelineId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "sweepJobs" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "format" : "uuid"
            }
          },
          "bridgeTransferId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "skipped" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "CreateFundingWallet" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "label" : {
            "type" : "string"
          },
          "lowBalanceAlert" : {
            "type" : "string"
          }
        },
        "required" : [ "chain" ]
      },
      "EnvelopeFundingWalletView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/FundingWalletView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "FundingWalletView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "address" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "balance" : {
            "type" : "string"
          },
          "balanceFormatted" : {
            "type" : "string"
          },
          "lowBalanceAlert" : {
            "type" : "string"
          },
          "estimatedSweepsRemaining" : {
            "type" : "integer",
            "format" : "int64"
          },
          "active" : {
            "type" : "boolean"
          }
        }
      },
      "TransferBody" : {
        "type" : "object",
        "properties" : {
          "token" : {
            "type" : "string",
            "minLength" : 1
          },
          "from" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "to" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "amount" : {
            "type" : "string",
            "minLength" : 1
          },
          "policyId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "destinationWalletId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "fastTransfer" : {
            "type" : "boolean"
          },
          "relayMode" : {
            "type" : "string",
            "enum" : [ "SELF_RELAY", "AUTO_RELAY", "HYBRID" ]
          }
        },
        "required" : [ "amount", "from", "to", "token" ]
      },
      "EnvelopeTransferView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/TransferView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "TransferView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "policyId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "token" : {
            "type" : "string"
          },
          "sourceChain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "destinationChain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "provider" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "PENDING", "SOURCE_PREPARED", "SOURCE_SIGNED", "SOURCE_BROADCAST", "SOURCE_CONFIRMED", "AWAITING_ATTESTATION", "ATTESTED", "AWAITING_RELAY", "DEST_PREPARED", "DEST_SIGNED", "DEST_BROADCAST", "DEST_CONFIRMED", "COMPLETED", "SOURCE_FAILED", "STALLED_ATTESTATION", "STALLED_RELAY", "EXPIRED", "DEST_FAILED", "COMPLIANCE_REJECTED", "CANCELLED" ]
          },
          "relayMode" : {
            "type" : "string",
            "enum" : [ "SELF_RELAY", "AUTO_RELAY", "HYBRID" ]
          },
          "sourceAddress" : {
            "type" : "string"
          },
          "destinationAddress" : {
            "type" : "string"
          },
          "amountSent" : {
            "type" : "string"
          },
          "amountExpected" : {
            "type" : "string"
          },
          "amountReceived" : {
            "type" : "string"
          },
          "protocolFee" : {
            "type" : "string"
          },
          "approvalTx" : {
            "type" : "string"
          },
          "sourceTx" : {
            "type" : "string"
          },
          "destinationTx" : {
            "type" : "string"
          },
          "attestationAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "attestationExpiresAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "inFlightSince" : {
            "type" : "string",
            "format" : "date-time"
          },
          "inFlightSeconds" : {
            "type" : "integer",
            "format" : "int64"
          },
          "errorCode" : {
            "type" : "string"
          },
          "errorMessage" : {
            "type" : "string"
          },
          "recommendedAction" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "completedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "CancelBody" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string"
          }
        }
      },
      "QuoteBody" : {
        "type" : "object",
        "properties" : {
          "token" : {
            "type" : "string",
            "minLength" : 1
          },
          "from" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "to" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "amount" : {
            "type" : "string",
            "minLength" : 1
          },
          "fastTransfer" : {
            "type" : "boolean"
          },
          "destinationWalletId" : {
            "type" : "string",
            "format" : "uuid"
          }
        },
        "required" : [ "amount", "from", "to", "token" ]
      },
      "EnvelopeQuote" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/Quote"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PreparationStep" : {
        "type" : "object",
        "properties" : {
          "kind" : {
            "type" : "string"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "Quote" : {
        "type" : "object",
        "properties" : {
          "provider" : {
            "type" : "string"
          },
          "token" : {
            "type" : "string"
          },
          "source" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "destination" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "relayMode" : {
            "type" : "string",
            "enum" : [ "SELF_RELAY", "AUTO_RELAY", "HYBRID" ]
          },
          "amountSent" : {
            "type" : "string"
          },
          "protocolFee" : {
            "type" : "string"
          },
          "amountReceived" : {
            "type" : "string"
          },
          "amountReceivedFormatted" : {
            "type" : "string"
          },
          "sourceGasEstimate" : {
            "type" : "string"
          },
          "destinationGasEstimate" : {
            "type" : "string"
          },
          "sourceGasCurrency" : {
            "type" : "string"
          },
          "destinationGasCurrency" : {
            "type" : "string"
          },
          "feeRatioBps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "expectedDuration" : {
            "type" : "string"
          },
          "destinationReady" : {
            "type" : "boolean"
          },
          "destinationReason" : {
            "type" : "string"
          },
          "preparation" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PreparationStep"
            }
          },
          "quoteExpiresAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "CreateTransactionRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "type" : {
            "type" : "string"
          },
          "fromAddress" : {
            "type" : "string",
            "minLength" : 1
          },
          "toAddress" : {
            "type" : "string",
            "minLength" : 1
          },
          "amount" : {
            "type" : "string",
            "minLength" : 1
          },
          "tokenContract" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "priority" : {
            "type" : "string"
          },
          "subtractFee" : {
            "type" : "boolean"
          },
          "destinationTag" : {
            "type" : "integer",
            "format" : "int64"
          }
        },
        "required" : [ "amount", "chain", "fromAddress", "toAddress" ]
      },
      "EnvelopeUnsignedView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/UnsignedView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "FeeView" : {
        "type" : "object",
        "properties" : {
          "amount" : {
            "type" : "string"
          },
          "formatted" : {
            "type" : "string"
          },
          "currency" : {
            "type" : "string"
          },
          "breakdown" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          }
        }
      },
      "UnsignedView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "status" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          },
          "txid" : {
            "type" : "string"
          },
          "fromAddress" : {
            "type" : "string"
          },
          "toAddress" : {
            "type" : "string"
          },
          "amount" : {
            "type" : "string"
          },
          "unsignedPayload" : {
            "type" : "string"
          },
          "derivationPath" : {
            "type" : "string"
          },
          "derivationIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "metadata" : {
            "type" : "object",
            "additionalProperties" : { }
          },
          "estimatedFee" : {
            "$ref" : "#/components/schemas/FeeView"
          },
          "expiresAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "BroadcastRequest" : {
        "type" : "object",
        "properties" : {
          "signedTx" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "signedTx" ]
      },
      "BroadcastView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "txid" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string"
          },
          "broadcastAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopeBroadcastView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/BroadcastView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "WipeRequest" : {
        "type" : "object",
        "properties" : {
          "environment" : {
            "type" : "string",
            "minLength" : 1
          },
          "confirmAccountName" : {
            "type" : "string"
          },
          "acknowledgeFundLoss" : {
            "type" : "boolean"
          }
        },
        "required" : [ "environment" ]
      },
      "EnvelopeWipeResult" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/WipeResult"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "WipeResult" : {
        "type" : "object",
        "properties" : {
          "executed" : {
            "type" : "boolean"
          },
          "scheduledFor" : {
            "type" : "string",
            "format" : "date-time"
          },
          "scheduleId" : {
            "type" : "string",
            "format" : "uuid"
          }
        }
      },
      "ProofOfControlRequest" : {
        "type" : "object",
        "properties" : {
          "nonce" : {
            "type" : "string",
            "minLength" : 1
          },
          "signature" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "nonce", "signature" ]
      },
      "RotateRequest" : {
        "type" : "object",
        "properties" : {
          "environment" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "environment" ]
      },
      "EnvelopeMintedKeyView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/MintedKeyView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "MintedKeyView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "key" : {
            "type" : "string"
          },
          "preview" : {
            "type" : "string"
          },
          "environment" : {
            "type" : "string"
          },
          "warning" : {
            "type" : "string"
          }
        }
      },
      "CreateEdgeKeyRequest" : {
        "type" : "object",
        "properties" : {
          "label" : {
            "type" : "string",
            "maxLength" : 120,
            "minLength" : 0
          },
          "environment" : {
            "type" : "string"
          }
        }
      },
      "EnvelopeMintedEdgeKeyView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/MintedEdgeKeyView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "MintedEdgeKeyView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "key" : {
            "type" : "string"
          },
          "preview" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "setVersion" : {
            "type" : "integer",
            "format" : "int64"
          },
          "warning" : {
            "type" : "string"
          }
        }
      },
      "SweepFailureBody" : {
        "type" : "object",
        "properties" : {
          "policyId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "failCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "reason" : {
            "type" : "string"
          }
        },
        "required" : [ "policyId" ]
      },
      "AttestationBody" : {
        "type" : "object",
        "properties" : {
          "transferId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "delaySeconds" : {
            "type" : "integer",
            "format" : "int32"
          },
          "outcome" : {
            "type" : "string"
          }
        },
        "required" : [ "transferId" ]
      },
      "ProviderOutageBody" : {
        "type" : "object",
        "properties" : {
          "provider" : {
            "type" : "string"
          },
          "durationSeconds" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "provider" ]
      },
      "GasPriceBody" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "gasPriceGwei" : {
            "type" : "integer",
            "format" : "int64"
          }
        },
        "required" : [ "chain", "gasPriceGwei" ]
      },
      "SimulateDepositRequest" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string",
            "minLength" : 1
          },
          "amount" : {
            "type" : "string",
            "minLength" : 1
          },
          "chain" : {
            "type" : "string"
          },
          "tokenContract" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "autoConfirm" : {
            "type" : "boolean"
          },
          "confirmAfterSeconds" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "address", "amount" ]
      },
      "SimulateConfirmationRequest" : {
        "type" : "object",
        "properties" : {
          "transactionId" : {
            "type" : "string",
            "minLength" : 1
          },
          "confirmations" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "transactionId" ]
      },
      "SimulateConflict" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "address" : {
            "type" : "string"
          }
        }
      },
      "SimulateActivity" : {
        "type" : "object",
        "properties" : {
          "addresses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "historicalPerAddress" : {
            "type" : "integer",
            "format" : "int32"
          },
          "livePerAddress" : {
            "type" : "integer",
            "format" : "int32"
          },
          "amount" : {
            "type" : "string"
          }
        }
      },
      "CreateSessionRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "asset" : {
            "type" : "string",
            "maxLength" : 128,
            "minLength" : 0
          },
          "amount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "description" : {
            "type" : "string",
            "maxLength" : 255,
            "minLength" : 0
          },
          "customerEmail" : {
            "type" : "string",
            "format" : "email",
            "maxLength" : 200,
            "minLength" : 0
          },
          "customerName" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          },
          "reference" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          },
          "expiresInSeconds" : {
            "type" : "integer",
            "format" : "int32"
          },
          "underpaymentToleranceBps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "successUrl" : {
            "type" : "string",
            "maxLength" : 2000,
            "minLength" : 0
          },
          "cancelUrl" : {
            "type" : "string",
            "maxLength" : 2000,
            "minLength" : 0
          },
          "metadata" : {
            "type" : "object",
            "additionalProperties" : { }
          },
          "merchantId" : {
            "type" : "string",
            "format" : "uuid",
            "description" : "The sub-merchant this checkout is for. Omit when you are taking the payment yourself. A key scoped to one merchant may omit it and have its own filled in; naming a different merchant on such a key is refused."
          }
        },
        "required" : [ "asset", "chain" ]
      },
      "EnvelopeSessionView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/SessionView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "SessionView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "reference" : {
            "type" : "string"
          },
          "merchantId" : {
            "type" : "string",
            "format" : "uuid",
            "description" : "The sub-merchant this checkout is for, or null when the account took the payment itself."
          },
          "merchantName" : {
            "type" : "string",
            "description" : "That merchant's display name, for a dashboard that would otherwise have to resolve every id on the page."
          },
          "status" : {
            "type" : "string",
            "enum" : [ "created", "awaiting_payment", "underpaid", "detected", "confirmed", "completed", "expired", "expired_paid", "cancelled" ]
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "asset" : {
            "type" : "string"
          },
          "assetContract" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "amount" : {
            "type" : "string",
            "description" : "In the asset's own units, e.g. \"100.00\". Null on a donation, which accepts any amount."
          },
          "amountSmallest" : {
            "type" : "string",
            "description" : "The same figure in the asset's smallest unit, which is what the chain carries."
          },
          "amountReceived" : {
            "type" : "string"
          },
          "amountConfirmed" : {
            "type" : "string"
          },
          "amountRemaining" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "paymentUri" : {
            "type" : "string",
            "description" : "A chain-specific payment URI for a QR code. Built server-side: the conventions invert between chains and a decimal error here drains a customer."
          },
          "confirmations" : {
            "type" : "integer",
            "format" : "int32"
          },
          "confirmationsRequired" : {
            "type" : "integer",
            "format" : "int32"
          },
          "expiresAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "monitorUntil" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "When the address stops being monitored. Weeks after expiresAt, deliberately: a payment that lands late is still credited until this instant."
          },
          "serverTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The server's own clock, so a browser can render a countdown that does not depend on the accuracy of the device it is running on."
          },
          "checkoutUrl" : {
            "type" : "string"
          },
          "clientSecret" : {
            "type" : "string",
            "description" : "Returned once, on creation only."
          },
          "customerEmail" : {
            "type" : "string"
          },
          "merchantReference" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "settlementState" : {
            "type" : "string"
          },
          "successUrl" : {
            "type" : "string",
            "description" : "Where the payer is sent once it is paid. The merchant configured it; nothing here invents one."
          },
          "cancelUrl" : {
            "type" : "string"
          },
          "linkId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "warnings" : {
            "type" : "array",
            "description" : "Non-fatal conditions a merchant should see, e.g. no_sweep_policy.",
            "items" : {
              "type" : "string"
            }
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "confirmedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "CancelSessionRequest" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string",
            "maxLength" : 64,
            "minLength" : 0
          }
        }
      },
      "CreateMerchantRequest" : {
        "type" : "object",
        "properties" : {
          "slug" : {
            "type" : "string",
            "description" : "URL-safe handle, 3–40 characters of lowercase letters, digits and hyphens. Immutable: it appears in payment-page URLs you may already have sent out.",
            "maxLength" : 40,
            "minLength" : 0
          },
          "externalRef" : {
            "type" : "string",
            "description" : "YOUR identifier for this merchant. Worth setting on every one: without it, reconciling your book against ours is a name match. Unique per account, so provisioning the same merchant twice is refused rather than producing two merchants with half a balance each.",
            "maxLength" : 200,
            "minLength" : 0
          },
          "displayName" : {
            "type" : "string",
            "description" : "What a payer sees on the checkout page.",
            "maxLength" : 200,
            "minLength" : 0
          },
          "legalName" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          },
          "supportEmail" : {
            "type" : "string",
            "format" : "email",
            "maxLength" : 320,
            "minLength" : 0
          },
          "supportUrl" : {
            "type" : "string",
            "maxLength" : 2000,
            "minLength" : 0
          },
          "statementDescriptor" : {
            "type" : "string",
            "maxLength" : 40,
            "minLength" : 0
          },
          "feeBps" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Your commission in basis points, 0–10000. Applied at capture as a second entry beside the credit. Not retroactive: changing it changes what the next payment costs and nothing already recorded."
          },
          "metadata" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        },
        "required" : [ "displayName", "slug" ]
      },
      "EnvelopeMerchantView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/MerchantView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "MerchantView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "slug" : {
            "type" : "string"
          },
          "externalRef" : {
            "type" : "string"
          },
          "displayName" : {
            "type" : "string"
          },
          "legalName" : {
            "type" : "string"
          },
          "supportEmail" : {
            "type" : "string"
          },
          "supportUrl" : {
            "type" : "string"
          },
          "statementDescriptor" : {
            "type" : "string"
          },
          "feeBps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "active", "suspended", "closed" ]
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "logoUrl" : {
            "type" : "string",
            "description" : "Path to the merchant's logo, or null if none has been uploaded. Same-origin and immutably cached; the path changes when the logo does."
          },
          "metadata" : {
            "type" : "object",
            "additionalProperties" : { }
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "updatedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "PayoutRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "asset" : {
            "type" : "string",
            "maxLength" : 128,
            "minLength" : 0
          },
          "amount" : {
            "type" : "string",
            "description" : "In the asset's own units, positive. The sign is applied for you.",
            "maxLength" : 80,
            "minLength" : 0
          },
          "externalReference" : {
            "type" : "string",
            "description" : "Your reference for the transfer you made. Required, and the idempotency key.",
            "maxLength" : 200,
            "minLength" : 0
          },
          "memo" : {
            "type" : "string",
            "maxLength" : 255,
            "minLength" : 0
          }
        },
        "required" : [ "amount", "asset", "chain", "externalReference" ]
      },
      "EntryView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "capture", "fee", "payout", "adjustment", "reversal" ]
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "asset" : {
            "type" : "string"
          },
          "assetContract" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "amount" : {
            "type" : "string",
            "description" : "Signed, in the asset's own units. Positive increases what is owed to the merchant."
          },
          "sessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "externalReference" : {
            "type" : "string"
          },
          "memo" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopeEntryView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/EntryView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "AssetView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "merchantId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "kind" : {
            "type" : "string"
          },
          "contentType" : {
            "type" : "string"
          },
          "byteSize" : {
            "type" : "integer",
            "format" : "int32"
          },
          "width" : {
            "type" : "integer",
            "format" : "int32"
          },
          "height" : {
            "type" : "integer",
            "format" : "int32"
          },
          "url" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopeAssetView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/AssetView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "AdjustmentRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "asset" : {
            "type" : "string",
            "maxLength" : 128,
            "minLength" : 0
          },
          "amount" : {
            "type" : "string",
            "description" : "In the asset's own units. Prefix with '-' to reduce what is owed.",
            "maxLength" : 80,
            "minLength" : 0
          },
          "memo" : {
            "type" : "string",
            "description" : "Why. It appears on the merchant's statement.",
            "maxLength" : 255,
            "minLength" : 0
          }
        },
        "required" : [ "amount", "asset", "chain", "memo" ]
      },
      "CreateLinkRequest" : {
        "type" : "object",
        "properties" : {
          "mode" : {
            "type" : "string",
            "minLength" : 1
          },
          "addressMode" : {
            "type" : "string"
          },
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "asset" : {
            "type" : "string",
            "maxLength" : 128,
            "minLength" : 0
          },
          "amount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "minAmount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "maxAmount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "thresholdAmount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "closesAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "maxUses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "slug" : {
            "type" : "string",
            "maxLength" : 32,
            "minLength" : 0
          },
          "title" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          },
          "description" : {
            "type" : "string",
            "maxLength" : 500,
            "minLength" : 0
          },
          "successUrl" : {
            "type" : "string",
            "maxLength" : 2000,
            "minLength" : 0
          },
          "collectEmail" : {
            "type" : "boolean"
          },
          "sessionExpirySeconds" : {
            "type" : "integer",
            "format" : "int32"
          },
          "metadata" : {
            "type" : "object",
            "additionalProperties" : { }
          },
          "merchantId" : {
            "type" : "string",
            "format" : "uuid",
            "description" : "The sub-merchant this page collects for. Omit when you collect for yourself. Immutable once created: the page carries that merchant's branding and every payment against it is credited to their balance."
          }
        },
        "required" : [ "asset", "chain", "mode" ]
      },
      "EnvelopeLinkView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/LinkView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "LinkView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "slug" : {
            "type" : "string"
          },
          "url" : {
            "type" : "string"
          },
          "mode" : {
            "type" : "string",
            "enum" : [ "fixed", "donation" ]
          },
          "addressMode" : {
            "type" : "string",
            "enum" : [ "shared", "per_payer" ]
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "title" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "asset" : {
            "type" : "string"
          },
          "assetContract" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "amount" : {
            "type" : "string"
          },
          "minAmount" : {
            "type" : "string"
          },
          "maxAmount" : {
            "type" : "string"
          },
          "thresholdAmount" : {
            "type" : "string"
          },
          "amountRaised" : {
            "type" : "string",
            "description" : "Confirmed money only. A link that closed on detected funds would take its page down on the strength of a transaction a reorg can still undo."
          },
          "paymentCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "closesAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "maxUses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "address" : {
            "type" : "string",
            "description" : "Present in shared mode, where the link itself holds the address. Null on a per-payer donation link, where each donor has their own."
          },
          "paymentUri" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string"
          },
          "closedReason" : {
            "type" : "string"
          },
          "closedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "collectEmail" : {
            "type" : "boolean"
          },
          "successUrl" : {
            "type" : "string"
          },
          "sessionExpirySeconds" : {
            "type" : "integer",
            "format" : "int32"
          },
          "metadata" : {
            "type" : "object",
            "additionalProperties" : { }
          },
          "warnings" : {
            "type" : "array",
            "description" : "Non-fatal conditions worth surfacing, e.g. attribution_best_effort in shared mode.",
            "items" : {
              "type" : "string"
            }
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "MintKeyRequest" : {
        "type" : "object",
        "properties" : {
          "label" : {
            "type" : "string",
            "maxLength" : 120,
            "minLength" : 0
          },
          "origins" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "maxAmount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "allowedChains" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "allowedAssets" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "linkId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "merchantId" : {
            "type" : "string",
            "format" : "uuid",
            "description" : "Bind this pair to one sub-merchant. The secret half may then act only for them and the publishable half opens checkouts only in their name. Omit for a platform key covering every merchant in the account. Cannot be changed afterwards — mint a new pair."
          }
        }
      },
      "EnvelopeMintedPair" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/MintedPair"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "KeyView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "kind" : {
            "type" : "string",
            "description" : "secret | publishable"
          },
          "keyPrefix" : {
            "type" : "string",
            "description" : "The masked key, e.g. ppk_live_***…a1b2c3"
          },
          "label" : {
            "type" : "string"
          },
          "origins" : {
            "type" : "array",
            "description" : "Exact scheme://host[:port] origins a publishable key may be used from. Compared whole, never by suffix. Empty on a secret key, which is never presented by a browser.",
            "items" : {
              "type" : "string"
            }
          },
          "maxAmount" : {
            "type" : "string",
            "description" : "Per-session ceiling in the asset's smallest unit, as a decimal string. Required on a publishable key: it is what bounds the damage of a key that has leaked."
          },
          "allowedChains" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "allowedAssets" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "linkId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "active" : {
            "type" : "boolean"
          },
          "expiresAt" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "When a superseded key stops working. Set on the PREDECESSOR at rotation, so a deployed page keeps working until the merchant has shipped the new key."
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "lastUsedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "MintedPair" : {
        "type" : "object",
        "properties" : {
          "secret" : {
            "$ref" : "#/components/schemas/KeyView"
          },
          "secretKey" : {
            "type" : "string",
            "description" : "Returned once. Server-side only."
          },
          "publishable" : {
            "$ref" : "#/components/schemas/KeyView"
          },
          "publishableKey" : {
            "type" : "string",
            "description" : "Returned once, but not itself a secret: it is meant to be embedded in a page."
          }
        }
      },
      "ResendRequest" : {
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string",
            "format" : "email",
            "maxLength" : 200,
            "minLength" : 0
          }
        }
      },
      "CheckoutBrand" : {
        "type" : "object",
        "properties" : {
          "merchantName" : {
            "type" : "string",
            "description" : "The merchant the payer is buying from. Null when the account took the payment itself."
          },
          "merchantLogoUrl" : {
            "type" : "string",
            "description" : "Same-origin path to the merchant's logo, or null."
          },
          "logoWidth" : {
            "type" : "integer",
            "format" : "int32"
          },
          "logoHeight" : {
            "type" : "integer",
            "format" : "int32"
          },
          "platformName" : {
            "type" : "string",
            "description" : "The business providing the payment rails — the ChainOS account holder."
          },
          "platformLogoUrl" : {
            "type" : "string",
            "description" : "Same-origin path to the platform's own mark, or null."
          },
          "platformLogoWidth" : {
            "type" : "integer",
            "format" : "int32"
          },
          "platformLogoHeight" : {
            "type" : "integer",
            "format" : "int32"
          },
          "supportEmail" : {
            "type" : "string",
            "description" : "Where a payer asks a question about this payment. The merchant's own address when they set one — the fintech should not be fielding support for a shop's order."
          },
          "supportUrl" : {
            "type" : "string"
          }
        }
      },
      "EnvelopeInvoiceView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/InvoiceView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "InvoiceView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "number" : {
            "type" : "string"
          },
          "sessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "reference" : {
            "type" : "string"
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "issuedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "customerEmail" : {
            "type" : "string"
          },
          "customerName" : {
            "type" : "string"
          },
          "merchantName" : {
            "type" : "string"
          },
          "brand" : {
            "$ref" : "#/components/schemas/CheckoutBrand",
            "description" : "The two parties on a resold payment: the merchant the customer bought from, and the business providing the rails. Null when the account took the payment itself — one party needs no lockup."
          },
          "description" : {
            "type" : "string"
          },
          "amount" : {
            "type" : "string",
            "description" : "In the asset's own units."
          },
          "asset" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "chainName" : {
            "type" : "string"
          },
          "txid" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "viewUrl" : {
            "type" : "string",
            "description" : "Where the customer can read it. Carries a one-per-invoice token, so the link is the whole of the authorisation and only its digest is stored."
          },
          "pdfUrl" : {
            "type" : "string"
          },
          "emailedAt" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "When the mail was QUEUED, not delivered. Handing off to Kafka is the honest limit of what this module can know, and coupling a terminal payment state to SMTP would make a mail outage look like a failed payment."
          },
          "emailAttempts" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "CreateRequest" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "maxLength" : 64,
            "minLength" : 2
          }
        },
        "required" : [ "name" ]
      },
      "EnvelopeOrganizationView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/OrganizationView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "OrganizationView" : {
        "type" : "object",
        "properties" : {
          "accountId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "name" : {
            "type" : "string"
          },
          "slug" : {
            "type" : "string"
          },
          "role" : {
            "type" : "string"
          }
        }
      },
      "RoleRequest" : {
        "type" : "object",
        "properties" : {
          "role" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "role" ]
      },
      "EnvelopeMemberView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/MemberView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "MemberView" : {
        "type" : "object",
        "properties" : {
          "userId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "email" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "role" : {
            "type" : "string"
          },
          "pending" : {
            "type" : "boolean"
          }
        }
      },
      "InviteRequest" : {
        "type" : "object",
        "properties" : {
          "email" : {
            "type" : "string",
            "format" : "email",
            "minLength" : 1
          },
          "role" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "email", "role" ]
      },
      "OpenUpload" : {
        "type" : "object",
        "properties" : {
          "fileName" : {
            "type" : "string"
          },
          "contentType" : {
            "type" : "string"
          },
          "sizeBytes" : {
            "type" : "integer",
            "format" : "int64"
          }
        },
        "required" : [ "fileName" ]
      },
      "EnvelopeUploadSlot" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/UploadSlot"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "UploadSlot" : {
        "type" : "object",
        "properties" : {
          "uploadId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "uploadUrl" : {
            "type" : "string"
          },
          "method" : {
            "type" : "string"
          },
          "headers" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "expiresAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "maxBytes" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "EnvelopeUploadReceipt" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/UploadReceipt"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "UploadReceipt" : {
        "type" : "object",
        "properties" : {
          "uploadId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "fileName" : {
            "type" : "string"
          },
          "bytes" : {
            "type" : "integer",
            "format" : "int64"
          },
          "checksum" : {
            "type" : "string"
          },
          "detectedFormat" : {
            "type" : "string"
          }
        }
      },
      "AbandonRequest" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string"
          }
        }
      },
      "EnvelopeScanView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/ScanView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "ScanView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "projectId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "keySourceId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "basePath" : {
            "type" : "string"
          },
          "gapLimit" : {
            "type" : "integer",
            "format" : "int32"
          },
          "maxScan" : {
            "type" : "integer",
            "format" : "int32"
          },
          "status" : {
            "type" : "string"
          },
          "scannedToIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "addressesFound" : {
            "type" : "integer",
            "format" : "int32"
          },
          "rpcCallsUsed" : {
            "type" : "integer",
            "format" : "int32"
          },
          "truncated" : {
            "type" : "boolean"
          },
          "errorMessage" : {
            "type" : "string"
          },
          "startedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "completedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "CreateProject" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "assessment" : {
            "$ref" : "#/components/schemas/DetectCaseRequest"
          },
          "mode" : {
            "type" : "string",
            "enum" : [ "ADOPT", "CONSOLIDATE" ]
          }
        },
        "required" : [ "assessment", "name" ]
      },
      "DetectCaseRequest" : {
        "type" : "object",
        "properties" : {
          "mnemonics" : {
            "type" : "integer",
            "format" : "int32"
          },
          "hasRawKeys" : {
            "type" : "boolean"
          },
          "standardWallet" : {
            "type" : "boolean"
          },
          "providerHoldsKeys" : {
            "type" : "boolean"
          },
          "providerCanSign" : {
            "type" : "boolean"
          },
          "addressCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "chains" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
            }
          }
        }
      },
      "EnvelopeProjectView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/ProjectView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "ProjectView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "name" : {
            "type" : "string"
          },
          "detectedCase" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string"
          },
          "mode" : {
            "type" : "string"
          },
          "requiresAssistance" : {
            "type" : "boolean"
          },
          "assessment" : {
            "type" : "object",
            "additionalProperties" : { }
          },
          "observeStartedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "activatedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "completedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "CreateBatch" : {
        "type" : "object",
        "properties" : {
          "uploadId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "scanId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "keySourceId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "defaultChain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "rangeStart" : {
            "type" : "integer",
            "format" : "int32"
          },
          "rangeEnd" : {
            "type" : "integer",
            "format" : "int32"
          },
          "userRefMappingCsv" : {
            "type" : "string"
          }
        }
      },
      "BatchView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "projectId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "sourceType" : {
            "type" : "string"
          },
          "fileName" : {
            "type" : "string"
          },
          "fileBytes" : {
            "type" : "integer",
            "format" : "int64"
          },
          "checksum" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string"
          },
          "keySourceId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "totalRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "validRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "warningRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "errorRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "skippedRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "dryRunId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "dryRunAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "adoptedCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "committedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "rollbackDeadline" : {
            "type" : "string",
            "format" : "date-time"
          },
          "rolledBackAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "errorMessage" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopeBatchView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/BatchView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "StartScan" : {
        "type" : "object",
        "properties" : {
          "keySourceId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "basePath" : {
            "type" : "string"
          },
          "gapLimit" : {
            "type" : "integer",
            "format" : "int32"
          },
          "maxScan" : {
            "type" : "integer",
            "format" : "int32"
          },
          "probeTokens" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "userRefMappingCsv" : {
            "type" : "string"
          }
        },
        "required" : [ "chain", "keySourceId" ]
      },
      "Reason" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string"
          }
        }
      },
      "PlanBody" : {
        "type" : "object",
        "properties" : {
          "chains" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
            }
          },
          "tokens" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "dustFloor" : {
            "type" : "string"
          },
          "maxFeeRatioBps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "maxAddresses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "signingPath" : {
            "type" : "string",
            "enum" : [ "EDGE", "EXTERNAL" ]
          }
        }
      },
      "EnvelopePlanView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PlanView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PlanView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "projectId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "signingPath" : {
            "type" : "string",
            "enum" : [ "EDGE", "EXTERNAL" ]
          },
          "status" : {
            "type" : "string",
            "enum" : [ "PLANNED", "PREPARING", "AWAITING_SIGNATURE", "SIGNED", "BROADCASTING", "CONFIRMING", "COMPLETED", "PARTIAL", "FAILED", "CANCELLED" ]
          },
          "chains" : {
            "type" : "array",
            "items" : {
              "type" : "string",
              "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
            }
          },
          "tokens" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "operationsPlanned" : {
            "type" : "integer",
            "format" : "int32"
          },
          "operationsDone" : {
            "type" : "integer",
            "format" : "int32"
          },
          "operationsFailed" : {
            "type" : "integer",
            "format" : "int32"
          },
          "operationsSkipped" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalValue" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "estimatedFees" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "warnings" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "approvedBy" : {
            "type" : "string",
            "format" : "uuid"
          },
          "approvedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "errorMessage" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "completedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "operations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OperationView"
            }
          }
        }
      },
      "CapacityProjection" : {
        "type" : "object",
        "properties" : {
          "currentAddresses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "discoveredAddresses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "projectedTotal" : {
            "type" : "integer",
            "format" : "int32"
          },
          "currentBand" : {
            "type" : "string"
          },
          "currentBandLimit" : {
            "type" : "integer",
            "format" : "int32"
          },
          "withinBand" : {
            "type" : "boolean"
          },
          "requiredBand" : {
            "type" : "string"
          },
          "additionalMonthlyFee" : {
            "type" : "number",
            "format" : "double"
          },
          "consequence" : {
            "type" : "string"
          }
        }
      },
      "DryRun" : {
        "type" : "object",
        "properties" : {
          "batchId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "dryRunId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "generatedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "sourceDescription" : {
            "type" : "string"
          },
          "totalRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "validRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "warningRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "errorRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "skippedRows" : {
            "type" : "integer",
            "format" : "int32"
          },
          "spendableCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "watchOnlyCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "userRefCoverage" : {
            "type" : "number",
            "format" : "double"
          },
          "byChain" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "integer",
              "format" : "int32"
            }
          },
          "byPhase" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "integer",
              "format" : "int32"
            }
          },
          "topErrors" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "estimatedHistorical" : {
            "type" : "integer",
            "format" : "int64"
          },
          "capacity" : {
            "$ref" : "#/components/schemas/CapacityProjection"
          },
          "blockers" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "committable" : {
            "type" : "boolean"
          }
        }
      },
      "EnvelopeDryRun" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/DryRun"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "EnvelopeRollbackResult" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/RollbackResult"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "RollbackResult" : {
        "type" : "object",
        "properties" : {
          "batchId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "removed" : {
            "type" : "integer",
            "format" : "int32"
          },
          "note" : {
            "type" : "string"
          }
        }
      },
      "Commit" : {
        "type" : "object",
        "properties" : {
          "dryRunId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "acceptBillingChange" : {
            "type" : "boolean"
          }
        },
        "required" : [ "dryRunId" ]
      },
      "CommitResult" : {
        "type" : "object",
        "properties" : {
          "batchId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "adopted" : {
            "type" : "integer",
            "format" : "int32"
          },
          "skipped" : {
            "type" : "integer",
            "format" : "int32"
          },
          "watermarks" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "integer",
              "format" : "int64"
            }
          },
          "rollbackDeadline" : {
            "type" : "string",
            "format" : "date-time"
          },
          "mode" : {
            "type" : "string"
          },
          "nextStep" : {
            "type" : "string"
          }
        }
      },
      "EnvelopeCommitResult" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/CommitResult"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "DetectPathRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "xpub" : {
            "type" : "string"
          },
          "knownAddress" : {
            "type" : "string"
          }
        },
        "required" : [ "chain", "knownAddress", "xpub" ]
      },
      "EnvelopePathVerdict" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PathVerdict"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PathVerdict" : {
        "type" : "object",
        "properties" : {
          "detected" : {
            "type" : "boolean"
          },
          "basePath" : {
            "type" : "string"
          },
          "accountPerAddress" : {
            "type" : "boolean"
          },
          "matchedAtIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "scriptType" : {
            "type" : "string"
          },
          "walletHint" : {
            "type" : "string"
          },
          "candidatesTried" : {
            "type" : "integer",
            "format" : "int32"
          },
          "triedPaths" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "CaseVerdict" : {
        "type" : "object",
        "properties" : {
          "detectedCase" : {
            "type" : "string",
            "enum" : [ "A", "B", "C", "D", "E", "F" ]
          },
          "recommendedMode" : {
            "type" : "string",
            "enum" : [ "ADOPT", "CONSOLIDATE" ]
          },
          "complexity" : {
            "type" : "string"
          },
          "requiresZiklagAssistance" : {
            "type" : "boolean"
          },
          "watchOnlyOnly" : {
            "type" : "boolean"
          },
          "discoveryAvailable" : {
            "type" : "boolean"
          },
          "headline" : {
            "type" : "string"
          },
          "reasons" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "nextSteps" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "EnvelopeCaseVerdict" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/CaseVerdict"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "BroadcastResult" : {
        "type" : "object",
        "properties" : {
          "planId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "accepted" : {
            "type" : "integer",
            "format" : "int32"
          },
          "unmatched" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "rejected" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "plan" : {
            "$ref" : "#/components/schemas/PlanView"
          }
        }
      },
      "EnvelopeBroadcastResult" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/BroadcastResult"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "AddressPoolBody" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string"
          },
          "startIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "addresses" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PooledAddressBody"
            }
          }
        }
      },
      "ChainRegistrationBody" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "xpub" : {
            "type" : "string",
            "minLength" : 1
          },
          "path" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "chain", "path", "xpub" ]
      },
      "GasTankBody" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "address" : {
            "type" : "string",
            "minLength" : 1
          },
          "path" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "address", "chain", "path" ]
      },
      "PooledAddressBody" : {
        "type" : "object",
        "properties" : {
          "index" : {
            "type" : "integer",
            "format" : "int32"
          },
          "address" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "address" ]
      },
      "SyncBody" : {
        "type" : "object",
        "properties" : {
          "edgeVersion" : {
            "type" : "string",
            "minLength" : 1
          },
          "instanceId" : {
            "type" : "string",
            "minLength" : 1
          },
          "sessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "environment" : {
            "type" : "string",
            "minLength" : 1
          },
          "podHint" : {
            "type" : "string"
          },
          "hostFingerprint" : {
            "type" : "string"
          },
          "leaderEligible" : {
            "type" : "boolean"
          },
          "outboxMode" : {
            "type" : "string"
          },
          "chains" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ChainRegistrationBody"
            }
          },
          "solanaPool" : {
            "$ref" : "#/components/schemas/AddressPoolBody"
          },
          "addressPools" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/AddressPoolBody"
            }
          },
          "gasTanks" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/GasTankBody"
            }
          }
        },
        "required" : [ "edgeVersion", "environment", "instanceId", "sessionId" ]
      },
      "ApiKeyRecord" : {
        "type" : "object",
        "properties" : {
          "hash" : {
            "type" : "string"
          },
          "prefix" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "revoked" : {
            "type" : "boolean"
          }
        }
      },
      "ApiKeySet" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "format" : "int64"
          },
          "keys" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ApiKeyRecord"
            }
          }
        }
      },
      "EnvelopeSyncResponse" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/SyncResponse"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "SyncResponse" : {
        "type" : "object",
        "properties" : {
          "installationToken" : {
            "type" : "string"
          },
          "tokenExpiresAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "streamEndpoint" : {
            "type" : "string"
          },
          "accountId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "sessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chainsRegistered" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "addressPoolDepth" : {
            "type" : "integer",
            "format" : "int64"
          },
          "heartbeatIntervalSeconds" : {
            "type" : "integer",
            "format" : "int32"
          },
          "leaseTtlSeconds" : {
            "type" : "integer",
            "format" : "int32"
          },
          "apiKeySet" : {
            "$ref" : "#/components/schemas/ApiKeySet"
          }
        }
      },
      "PoolBody" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string"
          },
          "startIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "addresses" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PooledAddressBody"
            }
          }
        },
        "required" : [ "addresses" ]
      },
      "ResumeBody" : {
        "type" : "object",
        "properties" : {
          "edgeVersion" : {
            "type" : "string",
            "minLength" : 1
          },
          "instanceId" : {
            "type" : "string",
            "minLength" : 1
          },
          "sessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "environment" : {
            "type" : "string",
            "minLength" : 1
          },
          "podHint" : {
            "type" : "string"
          },
          "hostFingerprint" : {
            "type" : "string"
          },
          "leaderEligible" : {
            "type" : "boolean"
          },
          "outboxMode" : {
            "type" : "string"
          }
        },
        "required" : [ "edgeVersion", "environment", "instanceId", "sessionId" ]
      },
      "LeaseBody" : {
        "type" : "object",
        "properties" : {
          "sessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "reason" : {
            "type" : "string"
          }
        },
        "required" : [ "sessionId" ]
      },
      "EnvelopeLeaseResult" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/LeaseResult"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "LeaseResult" : {
        "type" : "object",
        "properties" : {
          "granted" : {
            "type" : "boolean"
          },
          "epoch" : {
            "type" : "integer",
            "format" : "int64"
          },
          "expiresAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "leaderSessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "ttlSeconds" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "CoveredAddressBody" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "address" : {
            "type" : "string",
            "minLength" : 1
          },
          "derivationIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "derivationPath" : {
            "type" : "string"
          }
        },
        "required" : [ "address", "chain" ]
      },
      "DerivationBody" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "xpub" : {
            "type" : "string",
            "minLength" : 1
          },
          "basePath" : {
            "type" : "string",
            "minLength" : 1
          },
          "scriptType" : {
            "type" : "string"
          },
          "accountPerAddress" : {
            "type" : "boolean"
          }
        },
        "required" : [ "basePath", "chain", "xpub" ]
      },
      "RegisterBody" : {
        "type" : "object",
        "properties" : {
          "fingerprint" : {
            "type" : "string",
            "minLength" : 1
          },
          "label" : {
            "type" : "string"
          },
          "sourceType" : {
            "type" : "string",
            "minLength" : 1
          },
          "rawKeyCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "sessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "deriveDepth" : {
            "type" : "integer",
            "format" : "int32"
          },
          "derivations" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DerivationBody"
            }
          },
          "addresses" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/CoveredAddressBody"
            }
          }
        },
        "required" : [ "fingerprint", "sourceType" ]
      },
      "EnvelopeRegistrationResult" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/RegistrationResult"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "RegistrationResult" : {
        "type" : "object",
        "properties" : {
          "keySourceId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "fingerprint" : {
            "type" : "string"
          },
          "alreadyRegistered" : {
            "type" : "boolean"
          },
          "addressesRecorded" : {
            "type" : "integer",
            "format" : "int32"
          },
          "addressesPromoted" : {
            "type" : "integer",
            "format" : "int32"
          },
          "warnings" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "PurgeBody" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string"
          }
        }
      },
      "EnvelopeKeySourceView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/KeySourceView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "KeySourceView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "fingerprint" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "sourceType" : {
            "type" : "string"
          },
          "rawKeyCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "status" : {
            "type" : "string"
          },
          "addressCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "spendableAddresses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "chains" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "registeredAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "lastResolvedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "purgedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "purgeReason" : {
            "type" : "string"
          }
        }
      },
      "HeartbeatBody" : {
        "type" : "object",
        "properties" : {
          "sessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "instanceId" : {
            "type" : "string"
          },
          "edgeVersion" : {
            "type" : "string"
          },
          "outboxDepth" : {
            "type" : "integer",
            "format" : "int32"
          },
          "outboxPoisoned" : {
            "type" : "boolean"
          },
          "addressPoolDepth" : {
            "type" : "integer",
            "format" : "int32"
          },
          "chains" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "boolean"
            }
          }
        },
        "required" : [ "sessionId" ]
      },
      "EnvelopeHeartbeatResponse" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/HeartbeatResponse"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "HeartbeatResponse" : {
        "type" : "object",
        "properties" : {
          "acknowledged" : {
            "type" : "boolean"
          },
          "resyncRequired" : {
            "type" : "boolean"
          },
          "apiKeySet" : {
            "$ref" : "#/components/schemas/ApiKeySet"
          },
          "currentLeaseEpoch" : {
            "type" : "integer",
            "format" : "int64"
          },
          "leaderSessionId" : {
            "type" : "string",
            "format" : "uuid"
          }
        }
      },
      "BrowserSessionRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "asset" : {
            "type" : "string",
            "maxLength" : 128,
            "minLength" : 0
          },
          "amount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "description" : {
            "type" : "string",
            "maxLength" : 255,
            "minLength" : 0
          },
          "customerEmail" : {
            "type" : "string",
            "format" : "email",
            "maxLength" : 200,
            "minLength" : 0
          },
          "customerName" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          },
          "reference" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          },
          "expiresInSeconds" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "asset", "chain" ]
      },
      "CheckoutView" : {
        "type" : "object",
        "properties" : {
          "reference" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "created", "awaiting_payment", "underpaid", "detected", "confirmed", "completed", "expired", "expired_paid", "cancelled" ]
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "chainName" : {
            "type" : "string"
          },
          "asset" : {
            "type" : "string"
          },
          "assetContract" : {
            "type" : "string",
            "description" : "Null for the chain's native asset. Shown so a payer can verify the token they are sending."
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "amount" : {
            "type" : "string",
            "description" : "In the asset's own units, exactly as it must be paid. Never rounded for display: the payer types this into a wallet."
          },
          "amountSmallest" : {
            "type" : "string",
            "description" : "The same figure in the asset's smallest unit. Present so a client building a wallet transaction never has to multiply a decimal string by a power of ten itself — that arithmetic is where a payment goes wrong by a factor of a thousand, and the server already holds the exact integer."
          },
          "amountReceived" : {
            "type" : "string"
          },
          "amountRemaining" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string",
            "description" : "The address to pay, in full. Never truncated anywhere it is shown — the payer is comparing it against what their wallet displays."
          },
          "paymentUri" : {
            "type" : "string",
            "description" : "A chain-specific payment URI for the QR code, built server-side. The conventions invert between chains — EIP-681 carries smallest units and BIP-21 carries decimal ones, and an EIP-681 token URI targets the contract with the recipient as a parameter — so a client that built its own would eventually send a payer's funds to a token contract."
          },
          "confirmations" : {
            "type" : "integer",
            "format" : "int32"
          },
          "confirmationsRequired" : {
            "type" : "integer",
            "format" : "int32"
          },
          "expiresAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "serverTime" : {
            "type" : "string",
            "format" : "date-time"
          },
          "successUrl" : {
            "type" : "string",
            "description" : "Where to send the payer when it is paid. The merchant configured it; the page does not invent one."
          },
          "cancelUrl" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "brand" : {
            "$ref" : "#/components/schemas/CheckoutBrand",
            "description" : "Whose page this is: the merchant the payer is buying from, and the business providing the rails. Names and same-origin logo paths only — never an identifier."
          },
          "allowedOrigins" : {
            "type" : "array",
            "description" : "Origins permitted to frame this checkout. The frame validates the parent against this on every message, not just once at navigation: CSP is checked when the document loads and cannot speak again.",
            "items" : {
              "type" : "string"
            }
          },
          "evmChainId" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "The EIP-155 chain id, on the EVM chains and null everywhere else. Null is the signal that no wallet-connection path exists for this checkout and the page should offer none — TRON has no honoured URI scheme and Bitcoin has no connection protocol worth the name, so a Connect button on either would be a button that does nothing."
          },
          "walletConnectProjectId" : {
            "type" : "string",
            "description" : "A WalletConnect Cloud project id, or null. Public by construction — it identifies the project and does not authenticate it. Null means this deployment has none configured and the page offers QR and copy only, which is the primary path on every chain regardless."
          }
        }
      },
      "EnvelopeStartedCheckout" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/StartedCheckout"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "StartedCheckout" : {
        "type" : "object",
        "properties" : {
          "checkout" : {
            "$ref" : "#/components/schemas/CheckoutView"
          },
          "checkoutToken" : {
            "type" : "string"
          }
        }
      },
      "DonateRequest" : {
        "type" : "object",
        "properties" : {
          "amount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "email" : {
            "type" : "string",
            "format" : "email",
            "maxLength" : 200,
            "minLength" : 0
          },
          "name" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          }
        }
      },
      "BandChangeRequest" : {
        "type" : "object",
        "properties" : {
          "band" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "band" ]
      },
      "BalanceQuery" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "tokenContract" : {
            "type" : "string"
          }
        }
      },
      "BatchBalanceRequest" : {
        "type" : "object",
        "properties" : {
          "queries" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BalanceQuery"
            },
            "minItems" : 1
          }
        },
        "required" : [ "queries" ]
      },
      "EnvelopeListMapStringObject" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "type" : "object",
              "additionalProperties" : { }
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "SwitchOrgRequest" : {
        "type" : "object",
        "properties" : {
          "accountId" : {
            "type" : "string",
            "format" : "uuid"
          }
        },
        "required" : [ "accountId" ]
      },
      "EnvelopeSessionResponse" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/SessionResponse"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "SessionResponse" : {
        "type" : "object",
        "properties" : {
          "accessToken" : {
            "type" : "string"
          },
          "expiresInSeconds" : {
            "type" : "integer",
            "format" : "int32"
          },
          "user" : {
            "$ref" : "#/components/schemas/UserResponse"
          }
        }
      },
      "UserResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "accountId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "email" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "role" : {
            "type" : "string"
          },
          "accountName" : {
            "type" : "string"
          }
        }
      },
      "StepUpRequest" : {
        "type" : "object",
        "properties" : {
          "returnTo" : {
            "type" : "string",
            "maxLength" : 512,
            "minLength" : 0
          },
          "level" : {
            "type" : "string"
          }
        },
        "required" : [ "returnTo" ]
      },
      "EnvelopeObject" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : { },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "CreateAddressRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "userRef" : {
            "type" : "string",
            "maxLength" : 255,
            "minLength" : 0
          },
          "tag" : {
            "type" : "string",
            "maxLength" : 255,
            "minLength" : 0
          },
          "label" : {
            "type" : "string",
            "maxLength" : 255,
            "minLength" : 0
          }
        },
        "required" : [ "chain" ]
      },
      "AddressView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "address" : {
            "type" : "string"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "derivationPath" : {
            "type" : "string"
          },
          "derivationIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "poolIndex" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Index within the Edge-supplied address pool. Present on Solana and Stellar, where Ed25519 admits no public-key-only derivation and Cloud allocates rather than derives. Null elsewhere, where `derivationIndex` is set instead."
          },
          "destinationTag" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Always null. XRP addresses are unique per customer, so no tag is issued and a depositor can safely omit one."
          },
          "reserveDrops" : {
            "type" : "string",
            "description" : "Minimum a first deposit must carry, in the chain's smallest unit. Set on XRP (1,000,000 drops) and Stellar (10,000,000 stroops); null elsewhere. Neither account exists on its ledger until funded, and on Stellar the first payment must be a create_account rather than a plain payment."
          },
          "userRef" : {
            "type" : "string"
          },
          "tag" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "used" : {
            "type" : "boolean"
          },
          "status" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopeAddressView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/AddressView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "TrustlineRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "asset" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "asset", "chain" ]
      },
      "ValidateRequest" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "minLength" : 1
          },
          "address" : {
            "type" : "string",
            "minLength" : 1
          }
        },
        "required" : [ "address", "chain" ]
      },
      "UpdateWallet" : {
        "type" : "object",
        "properties" : {
          "label" : {
            "type" : "string"
          },
          "alertThreshold" : {
            "type" : "string"
          }
        }
      },
      "CancelRequest" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string"
          }
        }
      },
      "UpdateMerchantRequest" : {
        "type" : "object",
        "properties" : {
          "displayName" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          },
          "legalName" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          },
          "supportEmail" : {
            "type" : "string",
            "format" : "email",
            "maxLength" : 320,
            "minLength" : 0
          },
          "supportUrl" : {
            "type" : "string",
            "maxLength" : 2000,
            "minLength" : 0
          },
          "statementDescriptor" : {
            "type" : "string",
            "maxLength" : 40,
            "minLength" : 0
          },
          "feeBps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "metadata" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "StatusRequest" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "description" : "active | suspended | closed",
            "minLength" : 1
          }
        },
        "required" : [ "status" ]
      },
      "UpdateLinkRequest" : {
        "type" : "object",
        "properties" : {
          "title" : {
            "type" : "string",
            "maxLength" : 200,
            "minLength" : 0
          },
          "description" : {
            "type" : "string",
            "maxLength" : 500,
            "minLength" : 0
          },
          "successUrl" : {
            "type" : "string",
            "maxLength" : 2000,
            "minLength" : 0
          },
          "collectEmail" : {
            "type" : "boolean"
          },
          "minAmount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "maxAmount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "thresholdAmount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "closesAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "maxUses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "metadata" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "UpdateKeyRequest" : {
        "type" : "object",
        "properties" : {
          "origins" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "maxAmount" : {
            "type" : "string",
            "maxLength" : 80,
            "minLength" : 0
          },
          "allowedChains" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "allowedAssets" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "linkId" : {
            "type" : "string",
            "format" : "uuid"
          }
        }
      },
      "EnvelopeKeyView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/KeyView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "RenameRequest" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "maxLength" : 64,
            "minLength" : 2
          }
        },
        "required" : [ "name" ]
      },
      "RelabelRequest" : {
        "type" : "object",
        "properties" : {
          "label" : {
            "type" : "string"
          }
        },
        "required" : [ "label" ]
      },
      "UpdateAddressRequest" : {
        "type" : "object",
        "properties" : {
          "tag" : {
            "type" : "string",
            "maxLength" : 255,
            "minLength" : 0
          },
          "label" : {
            "type" : "string",
            "maxLength" : 255,
            "minLength" : 0
          }
        }
      },
      "EnvelopePagedWebhookView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedWebhookView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedWebhookView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/WebhookView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "DeliveryView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "webhookId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "event" : {
            "type" : "string"
          },
          "attempt" : {
            "type" : "integer",
            "format" : "int32"
          },
          "statusCode" : {
            "type" : "integer",
            "format" : "int32"
          },
          "error" : {
            "type" : "string"
          },
          "deliveryMode" : {
            "type" : "string"
          },
          "durationMs" : {
            "type" : "integer",
            "format" : "int32"
          },
          "deadLettered" : {
            "type" : "boolean"
          },
          "deliveredAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopePagedDeliveryView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedDeliveryView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedDeliveryView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DeliveryView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedWalletView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedWalletView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedWalletView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/WalletView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "AssetBalance" : {
        "type" : "object",
        "properties" : {
          "symbol" : {
            "type" : "string"
          },
          "contractAddress" : {
            "type" : "string"
          },
          "amount" : {
            "type" : "string"
          },
          "amountFormatted" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeWalletBalances" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/WalletBalances"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "WalletBalances" : {
        "type" : "object",
        "properties" : {
          "wallet" : {
            "$ref" : "#/components/schemas/WalletView"
          },
          "balances" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/AssetBalance"
            }
          }
        }
      },
      "EnvelopePagedMapStringObject" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedMapStringObject"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedMapStringObject" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "type" : "object",
              "additionalProperties" : { }
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedPolicyView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedPolicyView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedPolicyView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PolicyView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeJobPage" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/JobPage"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "JobPage" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedPipelineView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedPipelineView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedPipelineView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PipelineView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeFlow" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/Flow"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "Flow" : {
        "type" : "object",
        "properties" : {
          "pipelineId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "token" : {
            "type" : "string"
          },
          "stages" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Stage"
            }
          },
          "totalInSources" : {
            "type" : "string"
          },
          "totalInFlight" : {
            "type" : "string"
          },
          "totalAtDestination" : {
            "type" : "string"
          },
          "totalFormatted" : {
            "type" : "string"
          },
          "asOf" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "Stage" : {
        "type" : "object",
        "properties" : {
          "kind" : {
            "type" : "string"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "label" : {
            "type" : "string"
          },
          "state" : {
            "type" : "string"
          },
          "amount" : {
            "type" : "string"
          },
          "amountFormatted" : {
            "type" : "string"
          },
          "count" : {
            "type" : "integer",
            "format" : "int32"
          },
          "detail" : {
            "type" : "string"
          }
        }
      },
      "EnvelopePagedFundingWalletView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedFundingWalletView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedFundingWalletView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FundingWalletView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedTransferView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedTransferView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedTransferView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TransferView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeExposure" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/Exposure"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "Exposure" : {
        "type" : "object",
        "properties" : {
          "byToken" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TokenExposure"
            }
          },
          "stalled" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TransferView"
            }
          },
          "maxInFlightValue" : {
            "type" : "string"
          },
          "utilisationBps" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "TokenExposure" : {
        "type" : "object",
        "properties" : {
          "token" : {
            "type" : "string"
          },
          "count" : {
            "type" : "integer",
            "format" : "int32"
          },
          "value" : {
            "type" : "string"
          },
          "oldestInFlightSeconds" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "EnvelopeTransactionPage" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/TransactionPage"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "TransactionPage" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TransactionView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "TransactionView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "txid" : {
            "type" : "string"
          },
          "outputIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "direction" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "counterparty" : {
            "type" : "string"
          },
          "amount" : {
            "type" : "string"
          },
          "amountFormatted" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "tokenSymbol" : {
            "type" : "string"
          },
          "tokenContract" : {
            "type" : "string"
          },
          "blockNumber" : {
            "type" : "integer",
            "format" : "int64"
          },
          "confirmations" : {
            "type" : "integer",
            "format" : "int32"
          },
          "requiredConfirmations" : {
            "type" : "integer",
            "format" : "int32"
          },
          "status" : {
            "type" : "string"
          },
          "destinationTag" : {
            "type" : "integer",
            "format" : "int64"
          },
          "explorerUrl" : {
            "type" : "string"
          },
          "detectedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "confirmedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopeTransactionView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/TransactionView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "EnvelopePagedUnsignedView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedUnsignedView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedUnsignedView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/UnsignedView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedRotationView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedRotationView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedRotationView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RotationView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "RotationView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "status" : {
            "type" : "string"
          },
          "presentedFingerprint" : {
            "type" : "string"
          },
          "sourceIp" : {
            "type" : "string"
          },
          "edgeVersion" : {
            "type" : "string"
          },
          "detectedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "resolvedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "ApiKeyView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "preview" : {
            "type" : "string"
          },
          "environment" : {
            "type" : "string"
          },
          "active" : {
            "type" : "boolean"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "revokedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopePagedApiKeyView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedApiKeyView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedApiKeyView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ApiKeyView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EdgeKeyView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "preview" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "environment" : {
            "type" : "string"
          },
          "revoked" : {
            "type" : "boolean"
          },
          "createdAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopePagedEdgeKeyView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedEdgeKeyView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedEdgeKeyView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EdgeKeyView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeListScenario" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Scenario"
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "Scenario" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "provesWhat" : {
            "type" : "string"
          },
          "steps" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "EnvelopeSessionPage" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/SessionPage"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "SessionPage" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SessionView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeListReceiptView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ReceiptView"
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "ReceiptView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "txid" : {
            "type" : "string"
          },
          "outputIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "amount" : {
            "type" : "string",
            "description" : "In the asset's own units."
          },
          "amountSmallest" : {
            "type" : "string",
            "description" : "The same figure in the smallest unit."
          },
          "asset" : {
            "type" : "string"
          },
          "assetContract" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "assetMatch" : {
            "type" : "boolean"
          },
          "counted" : {
            "type" : "boolean"
          },
          "status" : {
            "type" : "string",
            "description" : "detected, confirmed or reorged."
          },
          "confirmations" : {
            "type" : "integer",
            "format" : "int32"
          },
          "late" : {
            "type" : "boolean"
          },
          "detectedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "confirmedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "ChainReadiness" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "displayName" : {
            "type" : "string"
          },
          "available" : {
            "type" : "boolean",
            "description" : "Whether a session can be created right now. False is a condition on the merchant's side, never the payer's, and `reason` says which."
          },
          "reason" : {
            "type" : "string"
          },
          "confirmationsRequired" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "Confirmations a payment on this chain waits for before it is safe to fulfil against."
          },
          "assets" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PayableAsset"
            }
          },
          "nativeMinimum" : {
            "type" : "string",
            "description" : "The least a payment in the chain's NATIVE asset may be, in its smallest unit, for collecting it to cost less than the configured share of its value. Null when the chain could not be asked — in which case nothing is enforced, because a fee-estimate outage must not refuse a real sale."
          },
          "estimatedSweepFee" : {
            "type" : "string",
            "description" : "What one sweep would cost, in the chain's native currency's smallest unit. For a TOKEN payment this cannot be compared with the amount without an exchange rate, which is deliberately not on the checkout path — so it is reported, and the merchant sets their own floor in the asset they price in."
          },
          "feeCurrency" : {
            "type" : "string"
          }
        }
      },
      "CheckoutReadiness" : {
        "type" : "object",
        "properties" : {
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "chains" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ChainReadiness"
            }
          },
          "serverTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The server's own clock."
          }
        }
      },
      "EnvelopeCheckoutReadiness" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/CheckoutReadiness"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PayableAsset" : {
        "type" : "object",
        "properties" : {
          "symbol" : {
            "type" : "string"
          },
          "contract" : {
            "type" : "string",
            "description" : "Null for the chain's own native asset."
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "isNative" : {
            "type" : "boolean"
          }
        }
      },
      "EnvelopePagedMerchantView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedMerchantView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedMerchantView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/MerchantView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedEntryView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedEntryView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedEntryView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/EntryView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeListAssetView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/AssetView"
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "BalanceView" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "asset" : {
            "type" : "string"
          },
          "assetContract" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "owed" : {
            "type" : "string",
            "description" : "In the asset's own units. May be negative — a refund after a payout has gone out leaves a real negative, and reporting it as zero would hide the discrepancy in the one place somebody would look."
          }
        }
      },
      "EnvelopeListBalanceView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BalanceView"
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "EnvelopeLinkPage" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/LinkPage"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "LinkPage" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LinkView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeListKeyView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/KeyView"
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "EnvelopeInvoicePage" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/InvoicePage"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "InvoicePage" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InvoiceView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeListOrganizationView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OrganizationView"
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "EnvelopePagedMemberView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedMemberView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedMemberView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/MemberView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "DiscoveredView" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "address" : {
            "type" : "string"
          },
          "derivationIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "derivationPath" : {
            "type" : "string"
          },
          "userRef" : {
            "type" : "string"
          },
          "hasTransactions" : {
            "type" : "boolean"
          },
          "nativeBalance" : {
            "type" : "string"
          },
          "tokenBalances" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "discoveredAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopePagedDiscoveredView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedDiscoveredView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedDiscoveredView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DiscoveredView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedProjectView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedProjectView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedProjectView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ProjectView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedScanView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedScanView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedScanView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ScanView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeObserveStatus" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/ObserveStatus"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "ObserveStatus" : {
        "type" : "object",
        "properties" : {
          "projectId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "status" : {
            "type" : "string"
          },
          "observeStartedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "batches" : {
            "type" : "integer",
            "format" : "int32"
          },
          "addressesObserving" : {
            "type" : "integer",
            "format" : "int32"
          },
          "depositsObserved" : {
            "type" : "integer",
            "format" : "int64"
          },
          "historicalRecorded" : {
            "type" : "integer",
            "format" : "int64"
          },
          "blockers" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "EnvelopePagedBatchView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedBatchView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedBatchView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BatchView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "ChainCount" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "addresses" : {
            "type" : "integer",
            "format" : "int64"
          },
          "withDerivationPath" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "EnvelopeExportPlan" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/ExportPlan"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "ExportPlan" : {
        "type" : "object",
        "properties" : {
          "projectId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "format" : {
            "type" : "string",
            "enum" : [ "CSV", "JSONL", "XPUB", "DESCRIPTOR" ]
          },
          "addresses" : {
            "type" : "integer",
            "format" : "int64"
          },
          "chains" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ChainCount"
            }
          },
          "available" : {
            "type" : "boolean"
          },
          "unavailableReason" : {
            "type" : "string"
          }
        }
      },
      "EnvelopeCapacityProjection" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/CapacityProjection"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "EnvelopePagedKeySourceView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedKeySourceView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedKeySourceView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/KeySourceView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedRowView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedRowView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedRowView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RowView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "RowView" : {
        "type" : "object",
        "properties" : {
          "rowNumber" : {
            "type" : "integer",
            "format" : "int32"
          },
          "chain" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "derivationPath" : {
            "type" : "string"
          },
          "derivationIndex" : {
            "type" : "integer",
            "format" : "int32"
          },
          "userRef" : {
            "type" : "string"
          },
          "label" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string"
          },
          "failedPhase" : {
            "type" : "string"
          },
          "errorCode" : {
            "type" : "string"
          },
          "errorMessage" : {
            "type" : "string"
          },
          "warnings" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "spendable" : {
            "type" : "boolean"
          }
        }
      },
      "EnvelopePagedPlanView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedPlanView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedPlanView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PlanView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopePagedOperationView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PagedOperationView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PagedOperationView" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OperationView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeListSessionStatus" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SessionStatus"
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "SessionStatus" : {
        "type" : "object",
        "properties" : {
          "sessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "podHint" : {
            "type" : "string"
          },
          "version" : {
            "type" : "string"
          },
          "liveness" : {
            "type" : "string"
          },
          "role" : {
            "type" : "string"
          },
          "leaseEpoch" : {
            "type" : "integer",
            "format" : "int64"
          },
          "lastHeartbeatAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "outboxMode" : {
            "type" : "string"
          },
          "outboxDepth" : {
            "type" : "integer",
            "format" : "int32"
          },
          "streamConnected" : {
            "type" : "boolean"
          }
        }
      },
      "ChainStatus" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "state" : {
            "type" : "string",
            "enum" : [ "not_ready", "ready", "quarantined", "pool_low" ]
          },
          "reason" : {
            "type" : "string"
          },
          "xpubPreview" : {
            "type" : "string"
          },
          "version" : {
            "type" : "integer",
            "format" : "int32"
          },
          "poolDepth" : {
            "type" : "integer",
            "format" : "int32"
          },
          "poolThreshold" : {
            "type" : "integer",
            "format" : "int32"
          },
          "gasTank" : {
            "$ref" : "#/components/schemas/GasTankStatus"
          },
          "updatedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "EnvelopeReadiness" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/Readiness"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "GasTankStatus" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string"
          },
          "derivationPath" : {
            "type" : "string"
          },
          "minimum" : {
            "type" : "string"
          }
        }
      },
      "PendingRotation" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid"
          },
          "pinnedFingerprint" : {
            "type" : "string"
          },
          "presentedFingerprint" : {
            "type" : "string"
          },
          "detectedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "sourceIp" : {
            "type" : "string"
          }
        }
      },
      "Readiness" : {
        "type" : "object",
        "properties" : {
          "environment" : {
            "type" : "string",
            "enum" : [ "live", "sandbox" ]
          },
          "liveness" : {
            "type" : "string",
            "enum" : [ "never_connected", "live", "degraded", "down", "live_no_leader" ]
          },
          "leaderSessionId" : {
            "type" : "string",
            "format" : "uuid"
          },
          "lastSyncAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "sessions" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SessionStatus"
            }
          },
          "chains" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ChainStatus"
            }
          },
          "pendingRotation" : {
            "$ref" : "#/components/schemas/PendingRotation"
          }
        }
      },
      "EnvelopeListGasTankView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/GasTankView"
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "GasTankView" : {
        "type" : "object",
        "properties" : {
          "chain" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "derivationPath" : {
            "type" : "string"
          },
          "balance" : {
            "type" : "string"
          },
          "minimum" : {
            "type" : "string"
          },
          "funded" : {
            "type" : "boolean"
          },
          "unavailable" : {
            "type" : "string"
          }
        }
      },
      "EnvelopeCheckoutView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/CheckoutView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "EnvelopePublicLinkView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/PublicLinkView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PublicLinkView" : {
        "type" : "object",
        "properties" : {
          "slug" : {
            "type" : "string"
          },
          "brand" : {
            "$ref" : "#/components/schemas/CheckoutBrand",
            "description" : "Whose page this is: the merchant collecting, and the business providing the rails. Names and same-origin logo paths only."
          },
          "mode" : {
            "type" : "string",
            "enum" : [ "fixed", "donation" ]
          },
          "addressMode" : {
            "type" : "string",
            "enum" : [ "shared", "per_payer" ]
          },
          "title" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "chain" : {
            "type" : "string",
            "enum" : [ "btc", "eth", "bsc", "polygon", "avax", "base", "tron", "sol", "xrp", "xlm" ]
          },
          "asset" : {
            "type" : "string"
          },
          "decimals" : {
            "type" : "integer",
            "format" : "int32"
          },
          "amount" : {
            "type" : "string"
          },
          "minAmount" : {
            "type" : "string"
          },
          "maxAmount" : {
            "type" : "string"
          },
          "thresholdAmount" : {
            "type" : "string"
          },
          "amountRaised" : {
            "type" : "string"
          },
          "paymentCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "closesAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "status" : {
            "type" : "string"
          },
          "closedReason" : {
            "type" : "string"
          },
          "collectEmail" : {
            "type" : "boolean"
          },
          "successUrl" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string",
            "description" : "The address to pay, in shared mode. Null in per-payer mode, where the page asks for an email and then requests one."
          },
          "paymentUri" : {
            "type" : "string"
          },
          "reference" : {
            "type" : "string",
            "description" : "The public reference of the session holding a shared address, so a payer whose money arrived late has something to quote."
          },
          "confirmationsRequired" : {
            "type" : "integer",
            "format" : "int32"
          },
          "serverTime" : {
            "type" : "string",
            "format" : "date-time",
            "description" : "The server's own clock. A page that trusted the device it runs on would show a closed campaign to a donor whose laptop is fast."
          }
        }
      },
      "EnvelopeUsageView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/UsageView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "UsageView" : {
        "type" : "object",
        "properties" : {
          "periodStart" : {
            "type" : "string",
            "format" : "date-time"
          },
          "periodEnd" : {
            "type" : "string",
            "format" : "date-time"
          },
          "addressesActive" : {
            "type" : "integer",
            "format" : "int32"
          },
          "addressLimit" : {
            "type" : "integer",
            "format" : "int32"
          },
          "settledTransactions" : {
            "type" : "integer",
            "format" : "int32"
          },
          "includedTransactions" : {
            "type" : "integer",
            "format" : "int32"
          },
          "overageTransactions" : {
            "type" : "integer",
            "format" : "int32"
          },
          "overageAmountUsd" : {
            "type" : "string"
          },
          "projectedOverageUsd" : {
            "type" : "string"
          },
          "band" : {
            "type" : "string"
          },
          "tier" : {
            "type" : "string"
          }
        }
      },
      "BandView" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "addresses" : {
            "type" : "integer",
            "format" : "int32"
          },
          "monthlyFee" : {
            "type" : "number",
            "format" : "double"
          },
          "includedTransactions" : {
            "type" : "integer",
            "format" : "int32"
          },
          "overageRate" : {
            "type" : "number",
            "format" : "double"
          },
          "requestsPerMinute" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeListBandView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BandView"
            }
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "EnvelopeIdentityView" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/IdentityView"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "IdentityView" : {
        "type" : "object",
        "properties" : {
          "subject" : {
            "type" : "string"
          },
          "issuer" : {
            "type" : "string"
          },
          "accountConsoleUrl" : {
            "type" : "string"
          },
          "acr" : {
            "type" : "string"
          },
          "multiFactor" : {
            "type" : "boolean"
          },
          "authenticatedAt" : {
            "type" : "string",
            "format" : "date-time"
          },
          "authenticationFresh" : {
            "type" : "boolean"
          },
          "freshnessMinutes" : {
            "type" : "integer",
            "format" : "int32"
          },
          "ssoSessionId" : {
            "type" : "string"
          },
          "clientId" : {
            "type" : "string"
          }
        }
      },
      "AddressPage" : {
        "type" : "object",
        "properties" : {
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/AddressView"
            }
          },
          "total" : {
            "type" : "integer",
            "format" : "int64"
          },
          "page" : {
            "type" : "integer",
            "format" : "int32"
          },
          "size" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "EnvelopeAddressPage" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean"
          },
          "data" : {
            "$ref" : "#/components/schemas/AddressPage"
          },
          "error" : {
            "$ref" : "#/components/schemas/ErrorBody"
          },
          "meta" : {
            "type" : "object",
            "additionalProperties" : { }
          }
        }
      },
      "PurgeRequest" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string"
          }
        }
      }
    },
    "securitySchemes" : {
      "ApiKeyAuth" : {
        "type" : "apiKey",
        "description" : "`zkl_live_*` / `zkl_test_*` against the Edge, `flk_live_*` / `flk_test_*` against Cloud. The prefix determines the environment.",
        "name" : "X-API-Key",
        "in" : "header"
      },
      "BearerAuth" : {
        "type" : "http",
        "description" : "Portal access token, 15 minute lifetime.",
        "scheme" : "bearer",
        "bearerFormat" : "JWT"
      }
    }
  }
}
