{
  "openapi": "3.1.0",
  "info": {
    "title": "Payward Services API",
    "description": "The Payward Services (PWS) public API.\n\nPWS exposes Swaps (institutional FX-style trading), Conversion rules (rule-driven fiat ↔ crypto value movement), retail-style Quotes and Price Trigger Swaps, end-user Users / Verifications, Travel Rule address ownership verification, Funds (deposits, withdrawals, addresses, transactions), Portfolio, Earn, Reports, Webhooks, and Ramp (hosted fiat-to-crypto on-ramp checkout).\n\nAll requests must be authenticated. All monetary values are decimal strings; all timestamps are ISO 8601 UTC. List endpoints are cursor-paginated. Errors follow a uniform shape (see `*ErrorResponse` schemas).",
    "version": "v1",
    "contact": {
      "name": "Payward Services API Support",
      "url": "https://docs.payward.com",
      "email": "api-support@payward.com"
    }
  },
  "paths": {
    "/v1/users/{user_id}": {
      "get": {
        "tags": ["Users"],
        "description": "Retrieve a previously created user by their user ID.\n\nReturns the user's core profile — its canonical `id`, the partner-supplied `external_reference`, the user `type`, the current `status` (including any required actions that are blocking or pending), the `created_at` timestamp, and the `accounts` associated with the user.\n\nCommon use cases:\n- Poll a user's `status` while it's transitioning (for example, after submitting verifications).\n- Confirm a user exists and retrieve its account IDs before issuing account-scoped calls.",
        "operationId": "getUser",
        "parameters": [
          {
            "in": "path",
            "name": "user_id",
            "required": true,
            "schema": {
              "description": "ID of the user the request applies to. For partners operating in the B2B2C model, this is the Sub-User the request is acting on behalf of.",
              "allOf": [
                {
                  "$ref": "#/components/schemas/UserId"
                }
              ]
            },
            "x-selected-account": true,
            "style": "simple",
            "example": "AA45N8G4MLDYWAR7"
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Retrieved user resource.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "User ID, also used as the user's canonical identifier.",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/UserId"
                            }
                          ]
                        },
                        "external_reference": {
                          "description": "Optional partner-supplied reference for this user. Typically an identifier in the partner's own system, but any opaque string the partner wants to associate with the user is accepted.",
                          "type": ["string", "null"]
                        },
                        "type": {
                          "description": "Indicates the type of the user.",
                          "type": "string",
                          "enum": ["individual", "corporate"]
                        },
                        "status": {
                          "description": "The overall status of the user.",
                          "oneOf": [
                            {
                              "type": "object",
                              "properties": {
                                "state": {
                                  "type": "string",
                                  "enum": ["ok"]
                                },
                                "required_actions": {
                                  "description": "Actions that are required and have not been completed, but are not blocking.",
                                  "type": "array",
                                  "items": {
                                    "oneOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "action_type": {
                                            "type": "string",
                                            "enum": ["verification"]
                                          },
                                          "verification_type": {
                                            "description": "Type of verification required.",
                                            "type": "string",
                                            "enum": [
                                              "identity",
                                              "residence",
                                              "selfie",
                                              "sanctions_check",
                                              "pep_check",
                                              "negative_news_check",
                                              "tax_id"
                                            ]
                                          },
                                          "reasons": {
                                            "description": "Reason why verification is required.",
                                            "type": "array",
                                            "items": {
                                              "anyOf": [
                                                {
                                                  "type": "string",
                                                  "enum": ["initial_onboarding"]
                                                },
                                                {
                                                  "description": "A catch-all for other reasons.",
                                                  "type": "string"
                                                }
                                              ]
                                            }
                                          },
                                          "deadline": {
                                            "description": "Deadline for completing the verification, if any.",
                                            "type": ["string", "null"],
                                            "format": "date-time"
                                          }
                                        },
                                        "required": ["action_type", "verification_type"],
                                        "description": "Additional verification is required."
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "action_type": {
                                            "type": "string",
                                            "enum": ["provide_details"]
                                          },
                                          "details_type": {
                                            "description": "Type of details required.",
                                            "oneOf": [
                                              {
                                                "description": "Terms of service",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["terms_of_service"]
                                                  },
                                                  "version": {
                                                    "description": "The version of the terms of service that the user has accepted.",
                                                    "type": "integer",
                                                    "format": "uint32",
                                                    "minimum": 0
                                                  }
                                                },
                                                "required": ["type", "version"]
                                              },
                                              {
                                                "description": "User's full name",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["full_name"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's date of birth",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["date_of_birth"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's city of birth",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["city_of_birth"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's country of birth",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["country_of_birth"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's nationalities",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["nationalities"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's residential address",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["residence"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's phone number",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["phone"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's occupation",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["occupation"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's tax IDs",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["tax_ids"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "Name of user's employer",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["employer"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "Client identifier assigned by partner",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["client_identifier"]
                                                  }
                                                },
                                                "required": ["type"]
                                              }
                                            ]
                                          },
                                          "reason": {
                                            "description": "Reason why details are required.",
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "enum": ["initial_onboarding"]
                                              },
                                              {
                                                "description": "A catch-all for other reasons.",
                                                "type": "string"
                                              }
                                            ]
                                          },
                                          "deadline": {
                                            "description": "Deadline for providing the details, if any.",
                                            "type": ["string", "null"],
                                            "format": "date-time"
                                          }
                                        },
                                        "required": ["action_type", "details_type"],
                                        "description": "Additional details are required."
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "action_type": {
                                            "type": "string",
                                            "enum": ["wait"]
                                          },
                                          "wait_reason_code": {
                                            "description": "Reason for the wait.",
                                            "type": "string"
                                          }
                                        },
                                        "required": ["action_type", "wait_reason_code"],
                                        "description": "User must wait while Payward performs additional checks."
                                      }
                                    ],
                                    "description": "An action that must be completed (or waited for) before the user can use the service.\n\nSome actions are blocking and must be completed before the user can use the service, while others are non-blocking and can be completed at any time.\n\nActions can have deadlines, after which the user may be disabled or closed."
                                  }
                                }
                              },
                              "required": ["required_actions", "state"],
                              "description": "User is active and able to use the service."
                            },
                            {
                              "type": "object",
                              "properties": {
                                "state": {
                                  "type": "string",
                                  "enum": ["disabled"]
                                },
                                "reasons": {
                                  "description": "Reason codes for why the user is disabled.",
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "enum": [
                                          "tos_not_accepted",
                                          "tos_rejected",
                                          "missing_required_verifications",
                                          "missing_required_details",
                                          "pending_verifications",
                                          "suspicious_activity"
                                        ]
                                      },
                                      {
                                        "description": "A catch-all for other reasons.",
                                        "type": "string"
                                      }
                                    ]
                                  }
                                },
                                "required_actions": {
                                  "description": "Required actions that must be completed before the user can use the service again.",
                                  "type": "array",
                                  "items": {
                                    "oneOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "action_type": {
                                            "type": "string",
                                            "enum": ["verification"]
                                          },
                                          "verification_type": {
                                            "description": "Type of verification required.",
                                            "type": "string",
                                            "enum": [
                                              "identity",
                                              "residence",
                                              "selfie",
                                              "sanctions_check",
                                              "pep_check",
                                              "negative_news_check",
                                              "tax_id"
                                            ]
                                          },
                                          "reasons": {
                                            "description": "Reason why verification is required.",
                                            "type": "array",
                                            "items": {
                                              "anyOf": [
                                                {
                                                  "type": "string",
                                                  "enum": ["initial_onboarding"]
                                                },
                                                {
                                                  "description": "A catch-all for other reasons.",
                                                  "type": "string"
                                                }
                                              ]
                                            }
                                          },
                                          "deadline": {
                                            "description": "Deadline for completing the verification, if any.",
                                            "type": ["string", "null"],
                                            "format": "date-time"
                                          }
                                        },
                                        "required": ["action_type", "verification_type"],
                                        "description": "Additional verification is required."
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "action_type": {
                                            "type": "string",
                                            "enum": ["provide_details"]
                                          },
                                          "details_type": {
                                            "description": "Type of details required.",
                                            "oneOf": [
                                              {
                                                "description": "Terms of service",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["terms_of_service"]
                                                  },
                                                  "version": {
                                                    "description": "The version of the terms of service that the user has accepted.",
                                                    "type": "integer",
                                                    "format": "uint32",
                                                    "minimum": 0
                                                  }
                                                },
                                                "required": ["type", "version"]
                                              },
                                              {
                                                "description": "User's full name",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["full_name"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's date of birth",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["date_of_birth"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's city of birth",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["city_of_birth"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's country of birth",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["country_of_birth"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's nationalities",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["nationalities"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's residential address",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["residence"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's phone number",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["phone"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's occupation",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["occupation"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "User's tax IDs",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["tax_ids"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "Name of user's employer",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["employer"]
                                                  }
                                                },
                                                "required": ["type"]
                                              },
                                              {
                                                "description": "Client identifier assigned by partner",
                                                "type": "object",
                                                "properties": {
                                                  "type": {
                                                    "type": "string",
                                                    "enum": ["client_identifier"]
                                                  }
                                                },
                                                "required": ["type"]
                                              }
                                            ]
                                          },
                                          "reason": {
                                            "description": "Reason why details are required.",
                                            "anyOf": [
                                              {
                                                "type": "string",
                                                "enum": ["initial_onboarding"]
                                              },
                                              {
                                                "description": "A catch-all for other reasons.",
                                                "type": "string"
                                              }
                                            ]
                                          },
                                          "deadline": {
                                            "description": "Deadline for providing the details, if any.",
                                            "type": ["string", "null"],
                                            "format": "date-time"
                                          }
                                        },
                                        "required": ["action_type", "details_type"],
                                        "description": "Additional details are required."
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "action_type": {
                                            "type": "string",
                                            "enum": ["wait"]
                                          },
                                          "wait_reason_code": {
                                            "description": "Reason for the wait.",
                                            "type": "string"
                                          }
                                        },
                                        "required": ["action_type", "wait_reason_code"],
                                        "description": "User must wait while Payward performs additional checks."
                                      }
                                    ],
                                    "description": "An action that must be completed (or waited for) before the user can use the service.\n\nSome actions are blocking and must be completed before the user can use the service, while others are non-blocking and can be completed at any time.\n\nActions can have deadlines, after which the user may be disabled or closed."
                                  }
                                }
                              },
                              "required": ["required_actions", "state"],
                              "description": "User is disabled and cannot use the service."
                            },
                            {
                              "type": "object",
                              "properties": {
                                "state": {
                                  "type": "string",
                                  "enum": ["closed"]
                                },
                                "reasons": {
                                  "description": "Reason codes for why the user is closed.",
                                  "type": "array",
                                  "items": {
                                    "anyOf": [
                                      {
                                        "type": "string",
                                        "enum": ["verification_failed", "tos_violation"]
                                      },
                                      {
                                        "description": "A catch-all for other reasons.",
                                        "type": "string"
                                      }
                                    ]
                                  }
                                }
                              },
                              "required": ["state"],
                              "description": "User is closed and cannot use the service."
                            }
                          ]
                        },
                        "created_at": {
                          "description": "The datetime when the user was created in ISO 8601 format.",
                          "type": "string",
                          "format": "date-time"
                        },
                        "accounts": {
                          "description": "Accounts associated with the user.",
                          "type": "array",
                          "items": {
                            "description": "Account associated with a user.",
                            "type": "object",
                            "properties": {
                              "id": {
                                "description": "Public account identifier.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 42
                              },
                              "name": {
                                "description": "Account display name.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              }
                            },
                            "required": ["id", "name"]
                          }
                        }
                      },
                      "required": ["created_at", "id", "status", "type"]
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "active-user": {
                    "summary": "Active user with no pending actions",
                    "value": {
                      "data": {
                        "id": "AA45N8G4MLDYWAR7",
                        "external_reference": "partner-customer-12345",
                        "type": "individual",
                        "status": {
                          "state": "ok",
                          "required_actions": []
                        },
                        "created_at": "2025-08-12T14:08:00Z",
                        "accounts": [
                          {
                            "id": "WX6VJUKWKKPBQE36",
                            "name": "main"
                          },
                          {
                            "id": "WC9RDEFHPSGLXRVX",
                            "name": "secondary"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Operation not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "Get User",
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/users/AA45N8G4MLDYWAR7\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      },
      "patch": {
        "tags": ["Users"],
        "description": "Update profile fields on an existing user.\n\nThis is a partial update — supply only the fields you want to change; omitted fields are left untouched. Updating verified profile data (name, residence, phone, nationalities, tax IDs, occupation, employer, date/place of birth) may re-trigger identity verification and temporarily transition the user into a non-`ok` `status` until the change is reviewed.\n\nReturns `{\"data\": \"success\"}` on acceptance. Use **Get User** afterwards to confirm the updated state and any new required actions.",
        "operationId": "updateUser",
        "parameters": [
          {
            "in": "path",
            "name": "user_id",
            "required": true,
            "schema": {
              "description": "ID of the user the request applies to. For partners operating in the B2B2C model, this is the Sub-User the request is acting on behalf of.",
              "allOf": [
                {
                  "$ref": "#/components/schemas/UserId"
                }
              ]
            },
            "x-selected-account": true,
            "style": "simple",
            "example": "AA45N8G4MLDYWAR7"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to update an existing user.",
                "type": "object",
                "properties": {
                  "full_name": {
                    "description": "User's full name",
                    "type": ["object", "null"],
                    "properties": {
                      "first_name": {
                        "description": "User's first name",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "middle_name": {
                        "description": "User's middle name",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "last_name": {
                        "description": "User's last name",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      }
                    },
                    "required": ["first_name", "last_name"]
                  },
                  "residence": {
                    "description": "User's residential address",
                    "type": ["object", "null"],
                    "properties": {
                      "line1": {
                        "description": "Address line 1",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "line2": {
                        "description": "Address line 2",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "city": {
                        "description": "City",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "postal_code": {
                        "description": "Postal code",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 32
                      },
                      "province": {
                        "description": "Province or state",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "country": {
                        "description": "Country",
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/CountryCode"
                          }
                        ]
                      }
                    },
                    "required": ["city", "country", "line1", "postal_code"]
                  },
                  "phone": {
                    "description": "Phone number in E.164 format",
                    "type": ["string", "null"],
                    "minLength": 1,
                    "maxLength": 16,
                    "pattern": "^\\+?[1-9]\\d{1,14}$"
                  },
                  "nationalities": {
                    "description": "User's nationalities. Omit to leave unchanged: empty arrays are treated as omitted, so clearing is not supported.",
                    "type": ["array", "null"],
                    "items": {
                      "$ref": "#/components/schemas/CountryCode"
                    }
                  },
                  "tax_ids": {
                    "description": "User's tax IDs. Omit to leave unchanged: empty arrays are treated as omitted, so clearing is not supported.",
                    "type": ["array", "null"],
                    "items": {
                      "description": "User tax identifier.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Taxpayer identifier",
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 128
                        },
                        "issuing_country": {
                          "description": "Country issuing the tax ID",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/CountryCode"
                            }
                          ]
                        }
                      },
                      "required": ["id", "issuing_country"]
                    }
                  },
                  "occupation": {
                    "description": "User's occupation",
                    "type": ["string", "null"],
                    "enum": [
                      "agriculture",
                      "business_management",
                      "computers_and_it",
                      "construction",
                      "education",
                      "finance",
                      "government",
                      "healthcare",
                      "hospitality",
                      "manufacturing",
                      "marketing",
                      "media",
                      "other",
                      "science",
                      "self_employed",
                      "student",
                      "transportation",
                      "unemployed",
                      "employed"
                    ]
                  },
                  "employer_name": {
                    "description": "Name of user's employer",
                    "type": ["string", "null"],
                    "minLength": 1,
                    "maxLength": 256
                  },
                  "client_identifier": {
                    "description": "Identifier assigned by the partner platform",
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["concat"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          },
                          "calculated_at": {
                            "type": "string",
                            "format": "date-time"
                          }
                        },
                        "required": ["calculated_at", "type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["passport"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          }
                        },
                        "required": ["type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["national_id"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          }
                        },
                        "required": ["type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["tax_id"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          }
                        },
                        "required": ["type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["lei"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          }
                        },
                        "required": ["type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["unknown"]
                          }
                        },
                        "required": ["type"]
                      }
                    ]
                  },
                  "language": {
                    "description": "The user's preferred language, as an [ISO 639-1] language code. If not provided, the user's language will be set to the default language for their country.\n\n[ISO 639-1]: https://en.wikipedia.org/wiki/ISO_639-1",
                    "type": ["string", "null"],
                    "pattern": "^[a-z]{2}$"
                  },
                  "birth": {
                    "description": "User's place and date of birth.",
                    "type": "object",
                    "properties": {
                      "date": {
                        "description": "User's date of birth",
                        "type": ["string", "null"],
                        "format": "date"
                      },
                      "city": {
                        "description": "User's city of birth",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "country": {
                        "description": "User's country of birth",
                        "type": ["string", "null"],
                        "minLength": 2,
                        "maxLength": 2,
                        "example": "US",
                        "enum": [
                          "AD",
                          "AE",
                          "AF",
                          "AG",
                          "AI",
                          "AL",
                          "AM",
                          "AO",
                          "AQ",
                          "AR",
                          "AS",
                          "AT",
                          "AU",
                          "AW",
                          "AX",
                          "AZ",
                          "BA",
                          "BB",
                          "BD",
                          "BE",
                          "BF",
                          "BG",
                          "BH",
                          "BI",
                          "BJ",
                          "BL",
                          "BM",
                          "BN",
                          "BO",
                          "BQ",
                          "BR",
                          "BS",
                          "BT",
                          "BV",
                          "BW",
                          "BY",
                          "BZ",
                          "CA",
                          "CC",
                          "CD",
                          "CF",
                          "CG",
                          "CH",
                          "CI",
                          "CK",
                          "CL",
                          "CM",
                          "CN",
                          "CO",
                          "CR",
                          "CU",
                          "CV",
                          "CW",
                          "CX",
                          "CY",
                          "CZ",
                          "DE",
                          "DJ",
                          "DK",
                          "DM",
                          "DO",
                          "DZ",
                          "EC",
                          "EE",
                          "EG",
                          "EH",
                          "ER",
                          "ES",
                          "ET",
                          "FI",
                          "FJ",
                          "FK",
                          "FM",
                          "FO",
                          "FR",
                          "GA",
                          "GB",
                          "GD",
                          "GE",
                          "GF",
                          "GG",
                          "GH",
                          "GI",
                          "GL",
                          "GM",
                          "GN",
                          "GP",
                          "GQ",
                          "GR",
                          "GS",
                          "GT",
                          "GU",
                          "GW",
                          "GY",
                          "HK",
                          "HM",
                          "HN",
                          "HR",
                          "HT",
                          "HU",
                          "ID",
                          "IE",
                          "IL",
                          "IM",
                          "IN",
                          "IO",
                          "IQ",
                          "IR",
                          "IS",
                          "IT",
                          "JE",
                          "JM",
                          "JO",
                          "JP",
                          "KE",
                          "KG",
                          "KH",
                          "KI",
                          "KM",
                          "KN",
                          "KP",
                          "KR",
                          "KW",
                          "KY",
                          "KZ",
                          "LA",
                          "LB",
                          "LC",
                          "LI",
                          "LK",
                          "LR",
                          "LS",
                          "LT",
                          "LU",
                          "LV",
                          "LY",
                          "MA",
                          "MC",
                          "MD",
                          "ME",
                          "MF",
                          "MG",
                          "MH",
                          "MK",
                          "ML",
                          "MM",
                          "MN",
                          "MO",
                          "MP",
                          "MQ",
                          "MR",
                          "MS",
                          "MT",
                          "MU",
                          "MV",
                          "MW",
                          "MX",
                          "MY",
                          "MZ",
                          "NA",
                          "NC",
                          "NE",
                          "NF",
                          "NG",
                          "NI",
                          "NL",
                          "NO",
                          "NP",
                          "NR",
                          "NU",
                          "NZ",
                          "OM",
                          "PA",
                          "PE",
                          "PF",
                          "PG",
                          "PH",
                          "PK",
                          "PL",
                          "PM",
                          "PN",
                          "PR",
                          "PS",
                          "PT",
                          "PW",
                          "PY",
                          "QA",
                          "RE",
                          "RO",
                          "RS",
                          "RU",
                          "RW",
                          "SA",
                          "SB",
                          "SC",
                          "SD",
                          "SE",
                          "SG",
                          "SH",
                          "SI",
                          "SJ",
                          "SK",
                          "SL",
                          "SM",
                          "SN",
                          "SO",
                          "SR",
                          "SS",
                          "ST",
                          "SV",
                          "SX",
                          "SY",
                          "SZ",
                          "TC",
                          "TD",
                          "TF",
                          "TG",
                          "TH",
                          "TJ",
                          "TK",
                          "TL",
                          "TM",
                          "TN",
                          "TO",
                          "TR",
                          "TT",
                          "TV",
                          "TW",
                          "TZ",
                          "UA",
                          "UG",
                          "UM",
                          "US",
                          "UY",
                          "UZ",
                          "VA",
                          "VC",
                          "VE",
                          "VG",
                          "VI",
                          "VN",
                          "VU",
                          "WF",
                          "WS",
                          "YE",
                          "YT",
                          "ZA",
                          "ZM",
                          "ZW",
                          "AC",
                          "AN",
                          "AP",
                          "CP",
                          "DG",
                          "EA",
                          "EU",
                          "IC",
                          "JX",
                          "TA",
                          "QO",
                          "XK",
                          "0C"
                        ]
                      }
                    }
                  }
                }
              },
              "examples": {
                "update-user-profile": {
                  "summary": "Update user profile fields",
                  "value": {
                    "full_name": {
                      "first_name": "Alex",
                      "last_name": "Morgan"
                    },
                    "birth": {
                      "date": "1990-04-15",
                      "city": "San Francisco",
                      "country": "US"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Update result.",
                      "type": "string",
                      "enum": ["success"]
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "updated-user": {
                    "summary": "Update accepted",
                    "value": {
                      "data": "success"
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Operation not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "Update User",
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X PATCH \"https://api.services.payward.com/v1/users/AA45N8G4MLDYWAR7\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"full_name\": {\"first_name\": \"Alex\", \"last_name\": \"Morgan\"}, \"birth\": {\"date\": \"1990-04-15\", \"city\": \"San Francisco\", \"country\": \"US\"}}'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/users": {
      "post": {
        "tags": ["Users"],
        "description": "Create a new user in the Payward system.\n\nWhen retrying user creation, send the same `external_reference` for the same partner user. Payward uses this value to avoid creating duplicate users. Retry responses are generated from the latest available user state, not replayed from the original request.\n\nReturns the created `id` and the `accounts` associated with the user.",
        "operationId": "createUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to create a new user.",
                "type": "object",
                "properties": {
                  "email": {
                    "description": "The email associated with the user.",
                    "type": "string",
                    "maxLength": 254,
                    "format": "email"
                  },
                  "external_reference": {
                    "description": "Stable partner-supplied reference for this user. Must be unique within your partner account. Reuse the same value only for the same user, including create retries.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 256
                  },
                  "full_name": {
                    "description": "User's full name",
                    "type": "object",
                    "properties": {
                      "first_name": {
                        "description": "User's first name",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "middle_name": {
                        "description": "User's middle name",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "last_name": {
                        "description": "User's last name",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      }
                    },
                    "required": ["first_name", "last_name"]
                  },
                  "birth": {
                    "description": "User's place and date of birth.",
                    "type": "object",
                    "properties": {
                      "date": {
                        "description": "User's date of birth",
                        "type": "string",
                        "format": "date"
                      },
                      "city": {
                        "description": "User's city of birth",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "country": {
                        "description": "User's country of birth",
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/CountryCode"
                          }
                        ]
                      }
                    },
                    "required": ["date"]
                  },
                  "residence": {
                    "description": "User's residential address",
                    "type": "object",
                    "properties": {
                      "line1": {
                        "description": "Address line 1",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "line2": {
                        "description": "Address line 2",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 256
                      },
                      "city": {
                        "description": "City",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "postal_code": {
                        "description": "Postal code",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 32
                      },
                      "province": {
                        "description": "Province or state",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "country": {
                        "description": "Country",
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/CountryCode"
                          }
                        ]
                      }
                    },
                    "required": ["city", "country", "line1", "postal_code"]
                  },
                  "phone": {
                    "description": "Phone number in E.164 format",
                    "type": "string",
                    "pattern": "^\\+?[1-9]\\d{1,14}$",
                    "minLength": 1,
                    "maxLength": 16
                  },
                  "nationalities": {
                    "description": "User's nationalities",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/CountryCode"
                    }
                  },
                  "occupation": {
                    "description": "User's occupation",
                    "type": "string",
                    "enum": [
                      "agriculture",
                      "business_management",
                      "computers_and_it",
                      "construction",
                      "education",
                      "finance",
                      "government",
                      "healthcare",
                      "hospitality",
                      "manufacturing",
                      "marketing",
                      "media",
                      "other",
                      "science",
                      "self_employed",
                      "student",
                      "transportation",
                      "unemployed",
                      "employed"
                    ]
                  },
                  "employer_name": {
                    "description": "Name of user's employer",
                    "type": ["string", "null"],
                    "minLength": 1,
                    "maxLength": 256
                  },
                  "tax_ids": {
                    "description": "User's tax ID",
                    "type": ["array", "null"],
                    "items": {
                      "description": "User tax identifier.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Taxpayer identifier",
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 128
                        },
                        "issuing_country": {
                          "description": "Country issuing the tax ID",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/CountryCode"
                            }
                          ]
                        }
                      },
                      "required": ["id", "issuing_country"]
                    }
                  },
                  "client_identifier": {
                    "description": "Identifier assigned by the partner platform",
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["concat"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          },
                          "calculated_at": {
                            "type": "string",
                            "format": "date-time"
                          }
                        },
                        "required": ["calculated_at", "type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["passport"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          }
                        },
                        "required": ["type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["national_id"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          }
                        },
                        "required": ["type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["tax_id"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          }
                        },
                        "required": ["type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["lei"]
                          },
                          "value": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 128
                          }
                        },
                        "required": ["type", "value"]
                      },
                      {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": ["unknown"]
                          }
                        },
                        "required": ["type"]
                      }
                    ]
                  },
                  "language": {
                    "description": "The user's preferred language, as an [ISO 639-1] language code. If not provided, the user's language will be set to the default language for their country.\n\n[ISO 639-1]: https://en.wikipedia.org/wiki/ISO_639-1",
                    "type": ["string", "null"],
                    "pattern": "^[a-z]{2}$"
                  }
                },
                "required": [
                  "email",
                  "external_reference",
                  "full_name",
                  "birth",
                  "residence",
                  "phone",
                  "nationalities",
                  "occupation"
                ]
              },
              "examples": {
                "create-individual-user": {
                  "summary": "Create an individual user",
                  "value": {
                    "email": "alex.morgan@example.com",
                    "external_reference": "partner-customer-9001",
                    "full_name": {
                      "first_name": "Alex",
                      "last_name": "Morgan"
                    },
                    "birth": {
                      "date": "1990-04-15",
                      "city": "San Francisco",
                      "country": "US"
                    },
                    "residence": {
                      "line1": "1 Market St",
                      "city": "San Francisco",
                      "postal_code": "94103",
                      "country": "US"
                    },
                    "phone": "+14155550110",
                    "nationalities": ["US"],
                    "occupation": "computers_and_it"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Created user payload.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "User ID of the newly created user, also used as its canonical identifier.",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/UserId"
                            }
                          ]
                        },
                        "accounts": {
                          "description": "Accounts associated with the created user.",
                          "type": "array",
                          "items": {
                            "description": "Account associated with a user.",
                            "type": "object",
                            "properties": {
                              "id": {
                                "description": "Public account identifier.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 42
                              },
                              "name": {
                                "description": "Account display name.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              }
                            },
                            "required": ["id", "name"]
                          }
                        }
                      },
                      "required": ["id"]
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "created-user": {
                    "summary": "Created user and accounts",
                    "value": {
                      "data": {
                        "id": "AA45N8G4MLDYWAR7",
                        "accounts": [
                          {
                            "id": "WX6VJUKWKKPBQE36",
                            "name": "main"
                          },
                          {
                            "id": "WC9RDEFHPSGLXRVX",
                            "name": "secondary"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Operation not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "Create User",
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/users\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"email\": \"alex.morgan@example.com\",\n    \"external_reference\": \"partner-customer-9001\",\n    \"full_name\": {\"first_name\": \"Alex\", \"last_name\": \"Morgan\"},\n    \"birth\": {\"date\": \"1990-04-15\", \"city\": \"San Francisco\", \"country\": \"US\"},\n    \"residence\": {\"line1\": \"1 Market St\", \"city\": \"San Francisco\", \"postal_code\": \"94103\", \"country\": \"US\"},\n    \"phone\": \"+14155550110\",\n    \"nationalities\": [\"US\"],\n    \"occupation\": \"computers_and_it\"\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/headless": {
      "post": {
        "tags": ["Users"],
        "description": "Create a new headless user in the Payward system.\n\nA headless user is a lightweight user that only requires an external reference, without any end-user profile data (email, name, phone, etc.).\n\nWhen retrying headless user creation, send the same `external_reference` for the same partner user. Payward uses this value to avoid creating duplicate users. Retry responses are generated from the latest available user state, not replayed from the original request.\n\nThis is useful for partners who manage end-user data entirely on their side.\n\n**Note:** The availability of this endpoint depends on your licensing agreement.\nOnly partners with the relevant licenses in their operating jurisdiction can choose not to share KYC data with Payward.\n\nIf you need to create a user with full profile data for KYC verification, use the **Create User** endpoint instead.",
        "operationId": "createHeadlessUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to create a new headless user.",
                "type": "object",
                "properties": {
                  "external_reference": {
                    "description": "Stable partner-supplied reference for this user. Must be unique within your partner account. Reuse the same value only for the same user, including create retries.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 256
                  }
                },
                "required": ["external_reference"]
              },
              "examples": {
                "create-headless-user": {
                  "summary": "Create a headless user",
                  "value": {
                    "external_reference": "partner-user-12345"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Created headless user payload.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "User ID of the newly created headless user, also used as its canonical identifier.",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/UserId"
                            }
                          ]
                        },
                        "accounts": {
                          "description": "Accounts associated with the created user.",
                          "type": "array",
                          "items": {
                            "description": "Account associated with a user.",
                            "type": "object",
                            "properties": {
                              "id": {
                                "description": "Public account identifier.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 42
                              },
                              "name": {
                                "description": "Account display name.",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              }
                            },
                            "required": ["id", "name"]
                          }
                        }
                      },
                      "required": ["id"]
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "created-headless-user": {
                    "summary": "Created headless user and accounts",
                    "value": {
                      "data": {
                        "id": "AA45N8G4MLDYWAR7",
                        "accounts": [
                          {
                            "id": "WX6VJUKWKKPBQE36",
                            "name": "main"
                          },
                          {
                            "id": "WC9RDEFHPSGLXRVX",
                            "name": "secondary"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Operation not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "Create Headless User",
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/users/headless\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"external_reference\": \"partner-user-12345\"}'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/assets": {
      "get": {
        "operationId": "listAssets",
        "tags": ["Assets"],
        "summary": "List Assets",
        "description": "List assets available on the platform.\n\nThe response includes each asset's symbol, type, display metadata, market data, and per-action availability. Use the optional filters to narrow the list by asset type or by whether an asset is enabled for swap trading, withdrawals, or deposits.",
        "parameters": [
          {
            "in": "query",
            "name": "country",
            "required": true,
            "description": "ISO 3166-1 alpha-2 country code used to apply geo restrictions (e.g. `US`, `GB`).",
            "schema": {
              "type": "string",
              "pattern": "^[A-Z]{2}$",
              "example": "US"
            }
          },
          {
            "in": "query",
            "name": "type",
            "description": "Filter assets by classification. Repeat the parameter to filter on multiple types.",
            "schema": {
              "type": "array",
              "default": [],
              "items": {
                "type": "string",
                "enum": ["fiat", "crypto", "stablecoin", "xstock"]
              },
              "minItems": 0,
              "maxItems": 4
            },
            "style": "form",
            "explode": true
          },
          {
            "in": "query",
            "name": "swap_trading",
            "description": "Filter to assets that are currently enabled for swap trading. Omit to ignore this dimension.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "withdraw",
            "description": "Filter to assets that are currently enabled for withdrawal. Omit to ignore this dimension.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "deposit",
            "description": "Filter to assets that are currently enabled for deposit. Omit to ignore this dimension.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "schema": {
              "default": "market_cap_rank",
              "title": "Sort Order",
              "type": "string",
              "enum": [
                "trending_rank",
                "market_cap_rank",
                "market_cap",
                "price",
                "volume.last_24h",
                "price_change_percent.last_1h",
                "price_change_percent.last_24h",
                "price_change_percent.last_7d",
                "price_change_percent.last_30d",
                "price_change_percent.last_1y",
                "symbol",
                "name",
                "listing_date"
              ]
            },
            "description": "Field to sort the results by. Use `sort_direction` to control ascending vs descending. Defaults to `market_cap_rank` (largest assets first when paired with `asc`)."
          },
          {
            "in": "query",
            "name": "sort_direction",
            "description": "Direction of the sort. Use `asc` for natural ascending order (rank 1 first, oldest first, lowest first); `desc` for the inverse.",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"],
              "default": "asc"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return on a single page.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response's `next_page_token`. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "description": "Ticker symbol of the fiat quote asset to use for valuations (e.g. `USD`, `EUR`). Defaults to `USD`.",
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 16,
              "default": "USD",
              "example": "USD"
            }
          },
          {
            "in": "query",
            "name": "quote_type",
            "description": "Classification of the quote asset. Currently only `fiat` is supported.",
            "schema": {
              "type": "string",
              "enum": ["fiat"],
              "default": "fiat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "The list of matching assets.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "symbol": {
                            "description": "The ticker symbol of the asset (e.g. `BTC`, `ETH`, `USD`).",
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/AssetSymbol"
                              }
                            ]
                          },
                          "type": {
                            "description": "Classification of the asset.",
                            "type": "string",
                            "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                            "example": "crypto"
                          },
                          "name": {
                            "$ref": "#/components/schemas/EnglishName"
                          },
                          "status": {
                            "description": "Per-action availability for this asset. Each sub-block describes whether the asset is currently enabled for that flow and any restrictions that apply.",
                            "type": "object",
                            "properties": {
                              "swap_trading": {
                                "description": "Eligibility for swap trading.",
                                "type": "object",
                                "properties": {
                                  "enabled": {
                                    "description": "Whether the asset is currently enabled for swap trading.",
                                    "type": "boolean"
                                  },
                                  "disabled_against": {
                                    "description": "Assets that cannot be paired with this one in a swap. Empty when the asset can be paired with any other tradable asset.",
                                    "type": "array",
                                    "items": {
                                      "$ref": "#/components/schemas/AssetRef"
                                    }
                                  }
                                },
                                "required": ["enabled", "disabled_against"]
                              },
                              "withdraw": {
                                "description": "Eligibility for withdrawals.",
                                "type": "object",
                                "properties": {
                                  "enabled": {
                                    "description": "Whether the asset is currently enabled for withdrawal.",
                                    "type": "boolean"
                                  }
                                },
                                "required": ["enabled"]
                              },
                              "deposit": {
                                "description": "Eligibility for deposits.",
                                "type": "object",
                                "properties": {
                                  "enabled": {
                                    "description": "Whether the asset is currently enabled for deposit.",
                                    "type": "boolean"
                                  }
                                },
                                "required": ["enabled"]
                              }
                            },
                            "required": ["swap_trading", "withdraw", "deposit"]
                          },
                          "listing_date": {
                            "description": "The date the asset was first listed on Payward.",
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/Date"
                              }
                            ]
                          },
                          "logo": {
                            "$ref": "#/components/schemas/Logo"
                          },
                          "decimals": {
                            "description": "Decimal precision for the asset across funding and swap operations.",
                            "type": "object",
                            "properties": {
                              "funding": {
                                "description": "Number of decimals supported when funding (depositing/withdrawing) this asset on its native protocol.",
                                "$ref": "#/components/schemas/Uint8"
                              },
                              "swap": {
                                "description": "Number of decimals supported when trading this asset via swap.",
                                "$ref": "#/components/schemas/Uint8"
                              }
                            },
                            "required": ["funding", "swap"]
                          },
                          "price": {
                            "$ref": "#/components/schemas/BigDecimal",
                            "description": "The latest price of the asset, in the requested `quote` asset."
                          },
                          "market_cap": {
                            "description": "The current market capitalization of the asset, in the requested `quote` asset.",
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/MarketCapValue"
                              }
                            ]
                          },
                          "market_cap_rank": {
                            "description": "The rank of the asset based on the total market capitalization.",
                            "$ref": "#/components/schemas/Uint32"
                          },
                          "trending_rank": {
                            "description": "The trending rank of the asset compared to all other trending assets.",
                            "$ref": "#/components/schemas/Uint32"
                          },
                          "volume": {
                            "description": "Trading volume over recent windows, denominated in the requested `quote` asset.",
                            "type": "object",
                            "properties": {
                              "last_24h": {
                                "$ref": "#/components/schemas/BigDecimal",
                                "description": "The 24-hour trading volume for the asset, in the requested `quote` asset."
                              }
                            }
                          },
                          "supply": {
                            "type": "object",
                            "properties": {
                              "circulating": {
                                "$ref": "#/components/schemas/BigDecimal"
                              },
                              "total": {
                                "$ref": "#/components/schemas/TotalSupply"
                              },
                              "max": {
                                "$ref": "#/components/schemas/MaxSupply"
                              },
                              "in_quote": {
                                "description": "Same supply figures valued at the current market price, denominated in the requested `quote` asset.",
                                "type": "object",
                                "properties": {
                                  "circulating": {
                                    "description": "Value of `supply.circulating` in the requested `quote` asset.",
                                    "$ref": "#/components/schemas/BigDecimal"
                                  },
                                  "total": {
                                    "description": "Value of `supply.total` in the requested `quote` asset.",
                                    "$ref": "#/components/schemas/BigDecimal"
                                  },
                                  "max": {
                                    "description": "Value of `supply.max` in the requested `quote` asset.",
                                    "$ref": "#/components/schemas/BigDecimal"
                                  }
                                }
                              }
                            },
                            "description": "Token supply figures. Quantities are denominated in the asset itself; their valuations in the requested `quote` asset live under `in_quote{}`. Absent when supply data is not applicable (e.g. fiat currencies)."
                          },
                          "price_change_percent": {
                            "type": "object",
                            "properties": {
                              "last_1h": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 1 hour.\n"
                              },
                              "last_24h": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 24 hours.\n"
                              },
                              "last_7d": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 7 days.\n"
                              },
                              "last_30d": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 30 days.\n"
                              },
                              "last_1y": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 1 year.\n"
                              }
                            },
                            "description": "Percentage change in the asset price over each rolling time window."
                          },
                          "ath": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "$ref": "#/components/schemas/AthValue"
                              },
                              "timestamp": {
                                "description": "Timestamp when the asset reached its all-time high price.",
                                "allOf": [
                                  {
                                    "$ref": "#/components/schemas/DateTime"
                                  }
                                ]
                              }
                            },
                            "description": "All-time-high price for the asset, with the timestamp it was reached."
                          }
                        },
                        "required": ["symbol", "type", "name", "logo", "decimals", "status"]
                      }
                    },
                    "quote_symbol": {
                      "description": "Quote asset symbol the prices are denominated in (resolved, defaults to USD).",
                      "type": "string",
                      "example": "USD"
                    },
                    "quote_type": {
                      "description": "Classification of the quote asset (resolved, defaults to fiat).",
                      "type": "string",
                      "enum": ["fiat"]
                    },
                    "page_size": {
                      "description": "Maximum number of results returned on this page. Echoes the `page_size` query parameter.",
                      "type": "integer",
                      "format": "int32"
                    },
                    "sort": {
                      "description": "Field the results were sorted by (resolved, defaults to market_cap_rank).",
                      "type": "string",
                      "enum": [
                        "trending_rank",
                        "market_cap_rank",
                        "market_cap",
                        "price",
                        "volume.last_24h",
                        "price_change_percent.last_1h",
                        "price_change_percent.last_24h",
                        "price_change_percent.last_7d",
                        "price_change_percent.last_30d",
                        "price_change_percent.last_1y",
                        "symbol",
                        "name",
                        "listing_date"
                      ]
                    },
                    "sort_direction": {
                      "description": "Direction the results were sorted in (resolved, defaults to asc).",
                      "type": "string",
                      "enum": ["asc", "desc"]
                    },
                    "type": {
                      "description": "Asset classifications the listing was filtered to. Empty when no type filter was applied.",
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": ["fiat", "crypto", "stablecoin", "xstock"]
                      }
                    },
                    "swap_trading": {
                      "description": "Swap-trading filter that was applied, echoed back. Absent when not filtered.",
                      "type": "boolean"
                    },
                    "withdraw": {
                      "description": "Withdrawal filter that was applied, echoed back. Absent when not filtered.",
                      "type": "boolean"
                    },
                    "deposit": {
                      "description": "Deposit filter that was applied, echoed back. Absent when not filtered.",
                      "type": "boolean"
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": ["data", "quote_symbol", "quote_type", "page_size", "sort", "sort_direction"],
                  "example": {
                    "data": [
                      {
                        "symbol": "BTC",
                        "type": "crypto",
                        "name": "Bitcoin",
                        "status": {
                          "swap_trading": {
                            "enabled": true,
                            "disabled_against": []
                          },
                          "withdraw": {
                            "enabled": true
                          },
                          "deposit": {
                            "enabled": true
                          }
                        },
                        "listing_date": "2013-09-12",
                        "logo": {
                          "width": 64,
                          "height": 64,
                          "href": "https://assets.payward.com/logos/btc.png",
                          "type": "image/png"
                        },
                        "decimals": {
                          "funding": 8,
                          "swap": 8
                        },
                        "price": "67234.18",
                        "market_cap": "1325840000000",
                        "market_cap_rank": 1,
                        "trending_rank": 3,
                        "volume": {
                          "last_24h": "38421000000"
                        },
                        "supply": {
                          "circulating": "19720893",
                          "total": "19720893",
                          "max": "21000000",
                          "in_quote": {
                            "circulating": "1325840000000",
                            "total": "1325840000000",
                            "max": "1411917780000"
                          }
                        },
                        "price_change_percent": {
                          "last_1h": "0.21",
                          "last_24h": "1.84",
                          "last_7d": "-2.13",
                          "last_30d": "6.42",
                          "last_1y": "78.34"
                        },
                        "ath": {
                          "value": "73750.07",
                          "timestamp": "2024-03-14T14:08:00Z"
                        }
                      },
                      {
                        "symbol": "ETH",
                        "type": "crypto",
                        "name": "Ethereum",
                        "status": {
                          "swap_trading": {
                            "enabled": true,
                            "disabled_against": [
                              {
                                "symbol": "XLM",
                                "type": "crypto"
                              }
                            ]
                          },
                          "withdraw": {
                            "enabled": true
                          },
                          "deposit": {
                            "enabled": true
                          }
                        },
                        "listing_date": "2015-08-07",
                        "logo": {
                          "width": 64,
                          "height": 64,
                          "href": "https://assets.payward.com/logos/eth.png",
                          "type": "image/png"
                        },
                        "decimals": {
                          "funding": 8,
                          "swap": 8
                        },
                        "price": "3251.40",
                        "market_cap": "391200000000",
                        "market_cap_rank": 2,
                        "trending_rank": 5,
                        "volume": {
                          "last_24h": "17820000000"
                        },
                        "supply": {
                          "circulating": "120284512",
                          "total": "120284512",
                          "max": null,
                          "in_quote": {
                            "circulating": "391200000000",
                            "total": "391200000000",
                            "max": null
                          }
                        },
                        "price_change_percent": {
                          "last_1h": "-0.12",
                          "last_24h": "2.45",
                          "last_7d": "-1.07",
                          "last_30d": "4.91",
                          "last_1y": "52.18"
                        },
                        "ath": {
                          "value": "4878.26",
                          "timestamp": "2021-11-10T14:24:00Z"
                        }
                      }
                    ],
                    "next_page_token": "eyJjdXJzb3IiOiJFVEgifQ=="
                  }
                },
                "examples": {
                  "first-page": {
                    "summary": "First page of assets across crypto, fiat, and xstock",
                    "value": {
                      "data": [
                        {
                          "symbol": "BTC",
                          "type": "crypto",
                          "name": "Bitcoin",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": [
                                {
                                  "symbol": "USDT",
                                  "type": "stablecoin",
                                  "name": "Tether USD"
                                },
                                {
                                  "symbol": "SOL",
                                  "type": "crypto",
                                  "name": "Solana"
                                }
                              ]
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_btc.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 8,
                            "swap": 10
                          },
                          "listing_date": "2013-10-06",
                          "price": "62081",
                          "market_cap": "1244183483835",
                          "market_cap_rank": 1,
                          "trending_rank": 66,
                          "volume": {
                            "last_24h": "53096507160"
                          },
                          "supply": {
                            "circulating": "20038918",
                            "total": "20038918",
                            "max": "21000000",
                            "in_quote": {
                              "circulating": "1244036068358",
                              "total": "1244036068358",
                              "max": "1303701000000"
                            }
                          },
                          "price_change_percent": {
                            "last_1h": "-0.312449",
                            "last_24h": "-0.584983",
                            "last_7d": "-15.616145",
                            "last_30d": "-24.558477",
                            "last_1y": "-40.690849"
                          },
                          "ath": {
                            "value": "126080",
                            "timestamp": "2025-10-06T18:57:42Z"
                          }
                        },
                        {
                          "symbol": "ETH",
                          "type": "crypto",
                          "name": "Ethereum",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": [
                                {
                                  "symbol": "USDT",
                                  "type": "stablecoin",
                                  "name": "Tether USD"
                                },
                                {
                                  "symbol": "SOL",
                                  "type": "crypto",
                                  "name": "Solana"
                                }
                              ]
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_eth.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 10,
                            "swap": 10
                          },
                          "listing_date": "2015-08-07",
                          "price": "1659.86",
                          "market_cap": "200269280850",
                          "market_cap_rank": 2,
                          "trending_rank": 55,
                          "volume": {
                            "last_24h": "27036726996"
                          },
                          "price_change_percent": {
                            "last_1h": "-0.5344",
                            "last_24h": "-4.915288",
                            "last_7d": "-17.382324",
                            "last_30d": "-31.162256",
                            "last_1y": "-36.021206"
                          },
                          "ath": {
                            "value": "4946.05",
                            "timestamp": "2025-08-24T19:21:03Z"
                          }
                        },
                        {
                          "symbol": "USD",
                          "type": "fiat",
                          "name": "US Dollar",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": [
                                {
                                  "symbol": "AED",
                                  "type": "fiat",
                                  "name": "UAE Dirham"
                                },
                                {
                                  "symbol": "USDT",
                                  "type": "stablecoin",
                                  "name": "Tether USD"
                                }
                              ]
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_usd.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 2,
                            "swap": 4
                          },
                          "listing_date": "2013-10-06"
                        },
                        {
                          "symbol": "TSLAx",
                          "type": "xstock",
                          "name": "Tesla, Inc.",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": []
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_tslax.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 8,
                            "swap": 8
                          },
                          "listing_date": "2025-06-30",
                          "price": "248.50",
                          "market_cap": "799000000000",
                          "market_cap_rank": 12,
                          "trending_rank": 8,
                          "volume": {
                            "last_24h": "1203456789"
                          },
                          "price_change_percent": {
                            "last_1h": "0.15",
                            "last_24h": "-1.02",
                            "last_7d": "3.44",
                            "last_30d": "-2.10",
                            "last_1y": "18.73"
                          },
                          "ath": {
                            "value": "488.54",
                            "timestamp": "2025-01-31T20:00:00Z"
                          }
                        }
                      ],
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "page_size": 20,
                      "sort": "market_cap_rank",
                      "sort_direction": "asc",
                      "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                    }
                  },
                  "last-page": {
                    "summary": "Last page of results — `nextPageToken` is omitted",
                    "value": {
                      "data": [
                        {
                          "symbol": "GBP",
                          "type": "fiat",
                          "name": "Pound Sterling",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": []
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_gbp.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 2,
                            "swap": 4
                          },
                          "listing_date": "2013-10-06"
                        }
                      ],
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "page_size": 20,
                      "sort": "market_cap_rank",
                      "sort_direction": "asc"
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/assets\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/assets": {
      "get": {
        "operationId": "listUserAssets",
        "tags": ["Assets"],
        "summary": "List User Assets",
        "description": "List assets available on the platform.\n\nThe response includes each asset's symbol, type, display metadata, market data, and per-action availability. Use the optional filters to narrow the list by asset type or by whether an asset is enabled for swap trading, withdrawals, or deposits.",
        "parameters": [
          {
            "in": "path",
            "name": "user_id",
            "description": "User Iiban",
            "schema": {
              "type": "string",
              "example": "AA07 N84G DLNK DA3I"
            },
            "example": "AA07 N84G DLNK DA3I",
            "x-selected-account": true,
            "style": "simple",
            "required": true
          },
          {
            "in": "query",
            "name": "type",
            "description": "Filter assets by classification. Repeat the parameter to filter on multiple types.",
            "schema": {
              "type": "array",
              "default": [],
              "items": {
                "type": "string",
                "enum": ["fiat", "crypto", "stablecoin", "xstock"]
              },
              "minItems": 0,
              "maxItems": 4
            },
            "style": "form",
            "explode": true
          },
          {
            "in": "query",
            "name": "swap_trading",
            "description": "Filter to assets that are currently enabled for swap trading. Omit to ignore this dimension.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "withdraw",
            "description": "Filter to assets that are currently enabled for withdrawal. Omit to ignore this dimension.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "deposit",
            "description": "Filter to assets that are currently enabled for deposit. Omit to ignore this dimension.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "schema": {
              "default": "market_cap_rank",
              "title": "Sort Order",
              "type": "string",
              "enum": [
                "trending_rank",
                "market_cap_rank",
                "market_cap",
                "price",
                "volume.last_24h",
                "price_change_percent.last_1h",
                "price_change_percent.last_24h",
                "price_change_percent.last_7d",
                "price_change_percent.last_30d",
                "price_change_percent.last_1y",
                "symbol",
                "name",
                "listing_date"
              ]
            },
            "description": "Field to sort the results by. Use `sort_direction` to control ascending vs descending. Defaults to `market_cap_rank` (largest assets first when paired with `asc`)."
          },
          {
            "in": "query",
            "name": "sort_direction",
            "description": "Direction of the sort. Use `asc` for natural ascending order (rank 1 first, oldest first, lowest first); `desc` for the inverse.",
            "schema": {
              "type": "string",
              "enum": ["asc", "desc"],
              "default": "asc"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return on a single page.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response's `next_page_token`. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "description": "Ticker symbol of the fiat quote asset to use for valuations (e.g. `USD`, `EUR`). Defaults to `USD`.",
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 16,
              "default": "USD",
              "example": "USD"
            }
          },
          {
            "in": "query",
            "name": "quote_type",
            "description": "Classification of the quote asset. Currently only `fiat` is supported.",
            "schema": {
              "type": "string",
              "enum": ["fiat"],
              "default": "fiat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "The list of matching assets.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "symbol": {
                            "description": "The ticker symbol of the asset (e.g. `BTC`, `ETH`, `USD`).",
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/AssetSymbol"
                              }
                            ]
                          },
                          "type": {
                            "description": "Classification of the asset.",
                            "type": "string",
                            "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                            "example": "crypto"
                          },
                          "name": {
                            "$ref": "#/components/schemas/EnglishName"
                          },
                          "status": {
                            "description": "Per-action availability for this asset. Each sub-block describes whether the asset is currently enabled for that flow and any restrictions that apply.",
                            "type": "object",
                            "properties": {
                              "swap_trading": {
                                "description": "Eligibility for swap trading.",
                                "type": "object",
                                "properties": {
                                  "enabled": {
                                    "description": "Whether the asset is currently enabled for swap trading.",
                                    "type": "boolean"
                                  },
                                  "disabled_against": {
                                    "description": "Assets that cannot be paired with this one in a swap. Empty when the asset can be paired with any other tradable asset.",
                                    "type": "array",
                                    "items": {
                                      "$ref": "#/components/schemas/AssetRef"
                                    }
                                  }
                                },
                                "required": ["enabled", "disabled_against"]
                              },
                              "withdraw": {
                                "description": "Eligibility for withdrawals.",
                                "type": "object",
                                "properties": {
                                  "enabled": {
                                    "description": "Whether the asset is currently enabled for withdrawal.",
                                    "type": "boolean"
                                  }
                                },
                                "required": ["enabled"]
                              },
                              "deposit": {
                                "description": "Eligibility for deposits.",
                                "type": "object",
                                "properties": {
                                  "enabled": {
                                    "description": "Whether the asset is currently enabled for deposit.",
                                    "type": "boolean"
                                  }
                                },
                                "required": ["enabled"]
                              }
                            },
                            "required": ["swap_trading", "withdraw", "deposit"]
                          },
                          "listing_date": {
                            "description": "The date the asset was first listed on Payward.",
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/Date"
                              }
                            ]
                          },
                          "logo": {
                            "$ref": "#/components/schemas/Logo"
                          },
                          "decimals": {
                            "description": "Decimal precision for the asset across funding and swap operations.",
                            "type": "object",
                            "properties": {
                              "funding": {
                                "description": "Number of decimals supported when funding (depositing/withdrawing) this asset on its native protocol.",
                                "$ref": "#/components/schemas/Uint8"
                              },
                              "swap": {
                                "description": "Number of decimals supported when trading this asset via swap.",
                                "$ref": "#/components/schemas/Uint8"
                              }
                            },
                            "required": ["funding", "swap"]
                          },
                          "price": {
                            "$ref": "#/components/schemas/BigDecimal",
                            "description": "The latest price of the asset, in the requested `quote` asset."
                          },
                          "market_cap": {
                            "description": "The current market capitalization of the asset, in the requested `quote` asset.",
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/MarketCapValue"
                              }
                            ]
                          },
                          "market_cap_rank": {
                            "description": "The rank of the asset based on the total market capitalization.",
                            "$ref": "#/components/schemas/Uint32"
                          },
                          "trending_rank": {
                            "description": "The trending rank of the asset compared to all other trending assets.",
                            "$ref": "#/components/schemas/Uint32"
                          },
                          "volume": {
                            "description": "Trading volume over recent windows, denominated in the requested `quote` asset.",
                            "type": "object",
                            "properties": {
                              "last_24h": {
                                "$ref": "#/components/schemas/BigDecimal",
                                "description": "The 24-hour trading volume for the asset, in the requested `quote` asset."
                              }
                            }
                          },
                          "supply": {
                            "type": "object",
                            "properties": {
                              "circulating": {
                                "$ref": "#/components/schemas/BigDecimal"
                              },
                              "total": {
                                "$ref": "#/components/schemas/TotalSupply"
                              },
                              "max": {
                                "$ref": "#/components/schemas/MaxSupply"
                              },
                              "in_quote": {
                                "description": "Same supply figures valued at the current market price, denominated in the requested `quote` asset.",
                                "type": "object",
                                "properties": {
                                  "circulating": {
                                    "description": "Value of `supply.circulating` in the requested `quote` asset.",
                                    "$ref": "#/components/schemas/BigDecimal"
                                  },
                                  "total": {
                                    "description": "Value of `supply.total` in the requested `quote` asset.",
                                    "$ref": "#/components/schemas/BigDecimal"
                                  },
                                  "max": {
                                    "description": "Value of `supply.max` in the requested `quote` asset.",
                                    "$ref": "#/components/schemas/BigDecimal"
                                  }
                                }
                              }
                            },
                            "description": "Token supply figures. Quantities are denominated in the asset itself; their valuations in the requested `quote` asset live under `in_quote{}`. Absent when supply data is not applicable (e.g. fiat currencies)."
                          },
                          "price_change_percent": {
                            "type": "object",
                            "properties": {
                              "last_1h": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 1 hour.\n"
                              },
                              "last_24h": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 24 hours.\n"
                              },
                              "last_7d": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 7 days.\n"
                              },
                              "last_30d": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 30 days.\n"
                              },
                              "last_1y": {
                                "$ref": "#/components/schemas/Percentage",
                                "description": "The price change percentage over the last 1 year.\n"
                              }
                            },
                            "description": "Percentage change in the asset price over each rolling time window."
                          },
                          "ath": {
                            "type": "object",
                            "properties": {
                              "value": {
                                "$ref": "#/components/schemas/AthValue"
                              },
                              "timestamp": {
                                "description": "Timestamp when the asset reached its all-time high price.",
                                "allOf": [
                                  {
                                    "$ref": "#/components/schemas/DateTime"
                                  }
                                ]
                              }
                            },
                            "description": "All-time-high price for the asset, with the timestamp it was reached."
                          }
                        },
                        "required": ["symbol", "type", "name", "logo", "decimals", "status"]
                      }
                    },
                    "quote_symbol": {
                      "description": "Quote asset symbol the prices are denominated in (resolved, defaults to USD).",
                      "type": "string",
                      "example": "USD"
                    },
                    "quote_type": {
                      "description": "Classification of the quote asset (resolved, defaults to fiat).",
                      "type": "string",
                      "enum": ["fiat"]
                    },
                    "page_size": {
                      "description": "Maximum number of results returned on this page. Echoes the `page_size` query parameter.",
                      "type": "integer",
                      "format": "int32"
                    },
                    "sort": {
                      "description": "Field the results were sorted by (resolved, defaults to market_cap_rank).",
                      "type": "string",
                      "enum": [
                        "trending_rank",
                        "market_cap_rank",
                        "market_cap",
                        "price",
                        "volume.last_24h",
                        "price_change_percent.last_1h",
                        "price_change_percent.last_24h",
                        "price_change_percent.last_7d",
                        "price_change_percent.last_30d",
                        "price_change_percent.last_1y",
                        "symbol",
                        "name",
                        "listing_date"
                      ]
                    },
                    "sort_direction": {
                      "description": "Direction the results were sorted in (resolved, defaults to asc).",
                      "type": "string",
                      "enum": ["asc", "desc"]
                    },
                    "type": {
                      "description": "Asset classifications the listing was filtered to. Empty when no type filter was applied.",
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": ["fiat", "crypto", "stablecoin", "xstock"]
                      }
                    },
                    "swap_trading": {
                      "description": "Swap-trading filter that was applied, echoed back. Absent when not filtered.",
                      "type": "boolean"
                    },
                    "withdraw": {
                      "description": "Withdrawal filter that was applied, echoed back. Absent when not filtered.",
                      "type": "boolean"
                    },
                    "deposit": {
                      "description": "Deposit filter that was applied, echoed back. Absent when not filtered.",
                      "type": "boolean"
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": ["data", "quote_symbol", "quote_type", "page_size", "sort", "sort_direction"],
                  "example": {
                    "data": [
                      {
                        "symbol": "BTC",
                        "type": "crypto",
                        "name": "Bitcoin",
                        "status": {
                          "swap_trading": {
                            "enabled": true,
                            "disabled_against": []
                          },
                          "withdraw": {
                            "enabled": true
                          },
                          "deposit": {
                            "enabled": true
                          }
                        },
                        "listing_date": "2013-09-12",
                        "logo": {
                          "width": 64,
                          "height": 64,
                          "href": "https://assets.payward.com/logos/btc.png",
                          "type": "image/png"
                        },
                        "decimals": {
                          "funding": 8,
                          "swap": 8
                        },
                        "price": "67234.18",
                        "market_cap": "1325840000000",
                        "market_cap_rank": 1,
                        "trending_rank": 3,
                        "volume": {
                          "last_24h": "38421000000"
                        },
                        "supply": {
                          "circulating": "19720893",
                          "total": "19720893",
                          "max": "21000000",
                          "in_quote": {
                            "circulating": "1325840000000",
                            "total": "1325840000000",
                            "max": "1411917780000"
                          }
                        },
                        "price_change_percent": {
                          "last_1h": "0.21",
                          "last_24h": "1.84",
                          "last_7d": "-2.13",
                          "last_30d": "6.42",
                          "last_1y": "78.34"
                        },
                        "ath": {
                          "value": "73750.07",
                          "timestamp": "2024-03-14T14:08:00Z"
                        }
                      },
                      {
                        "symbol": "ETH",
                        "type": "crypto",
                        "name": "Ethereum",
                        "status": {
                          "swap_trading": {
                            "enabled": true,
                            "disabled_against": [
                              {
                                "symbol": "XLM",
                                "type": "crypto"
                              }
                            ]
                          },
                          "withdraw": {
                            "enabled": true
                          },
                          "deposit": {
                            "enabled": true
                          }
                        },
                        "listing_date": "2015-08-07",
                        "logo": {
                          "width": 64,
                          "height": 64,
                          "href": "https://assets.payward.com/logos/eth.png",
                          "type": "image/png"
                        },
                        "decimals": {
                          "funding": 8,
                          "swap": 8
                        },
                        "price": "3251.40",
                        "market_cap": "391200000000",
                        "market_cap_rank": 2,
                        "trending_rank": 5,
                        "volume": {
                          "last_24h": "17820000000"
                        },
                        "supply": {
                          "circulating": "120284512",
                          "total": "120284512",
                          "max": null,
                          "in_quote": {
                            "circulating": "391200000000",
                            "total": "391200000000",
                            "max": null
                          }
                        },
                        "price_change_percent": {
                          "last_1h": "-0.12",
                          "last_24h": "2.45",
                          "last_7d": "-1.07",
                          "last_30d": "4.91",
                          "last_1y": "52.18"
                        },
                        "ath": {
                          "value": "4878.26",
                          "timestamp": "2021-11-10T14:24:00Z"
                        }
                      }
                    ],
                    "next_page_token": "eyJjdXJzb3IiOiJFVEgifQ=="
                  }
                },
                "examples": {
                  "first-page": {
                    "summary": "First page of assets across crypto, fiat, and xstock",
                    "value": {
                      "data": [
                        {
                          "symbol": "BTC",
                          "type": "crypto",
                          "name": "Bitcoin",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": [
                                {
                                  "symbol": "USDT",
                                  "type": "stablecoin",
                                  "name": "Tether USD"
                                },
                                {
                                  "symbol": "SOL",
                                  "type": "crypto",
                                  "name": "Solana"
                                }
                              ]
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_btc.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 8,
                            "swap": 10
                          },
                          "listing_date": "2013-10-06",
                          "price": "62081",
                          "market_cap": "1244183483835",
                          "market_cap_rank": 1,
                          "trending_rank": 66,
                          "volume": {
                            "last_24h": "53096507160"
                          },
                          "supply": {
                            "circulating": "20038918",
                            "total": "20038918",
                            "max": "21000000",
                            "in_quote": {
                              "circulating": "1244036068358",
                              "total": "1244036068358",
                              "max": "1303701000000"
                            }
                          },
                          "price_change_percent": {
                            "last_1h": "-0.312449",
                            "last_24h": "-0.584983",
                            "last_7d": "-15.616145",
                            "last_30d": "-24.558477",
                            "last_1y": "-40.690849"
                          },
                          "ath": {
                            "value": "126080",
                            "timestamp": "2025-10-06T18:57:42Z"
                          }
                        },
                        {
                          "symbol": "ETH",
                          "type": "crypto",
                          "name": "Ethereum",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": [
                                {
                                  "symbol": "USDT",
                                  "type": "stablecoin",
                                  "name": "Tether USD"
                                },
                                {
                                  "symbol": "SOL",
                                  "type": "crypto",
                                  "name": "Solana"
                                }
                              ]
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_eth.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 10,
                            "swap": 10
                          },
                          "listing_date": "2015-08-07",
                          "price": "1659.86",
                          "market_cap": "200269280850",
                          "market_cap_rank": 2,
                          "trending_rank": 55,
                          "volume": {
                            "last_24h": "27036726996"
                          },
                          "price_change_percent": {
                            "last_1h": "-0.5344",
                            "last_24h": "-4.915288",
                            "last_7d": "-17.382324",
                            "last_30d": "-31.162256",
                            "last_1y": "-36.021206"
                          },
                          "ath": {
                            "value": "4946.05",
                            "timestamp": "2025-08-24T19:21:03Z"
                          }
                        },
                        {
                          "symbol": "USD",
                          "type": "fiat",
                          "name": "US Dollar",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": [
                                {
                                  "symbol": "AED",
                                  "type": "fiat",
                                  "name": "UAE Dirham"
                                },
                                {
                                  "symbol": "USDT",
                                  "type": "stablecoin",
                                  "name": "Tether USD"
                                }
                              ]
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_usd.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 2,
                            "swap": 4
                          },
                          "listing_date": "2013-10-06"
                        },
                        {
                          "symbol": "TSLAx",
                          "type": "xstock",
                          "name": "Tesla, Inc.",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": []
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_tslax.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 8,
                            "swap": 8
                          },
                          "listing_date": "2025-06-30",
                          "price": "248.50",
                          "market_cap": "799000000000",
                          "market_cap_rank": 12,
                          "trending_rank": 8,
                          "volume": {
                            "last_24h": "1203456789"
                          },
                          "price_change_percent": {
                            "last_1h": "0.15",
                            "last_24h": "-1.02",
                            "last_7d": "3.44",
                            "last_30d": "-2.10",
                            "last_1y": "18.73"
                          },
                          "ath": {
                            "value": "488.54",
                            "timestamp": "2025-01-31T20:00:00Z"
                          }
                        }
                      ],
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "page_size": 20,
                      "sort": "market_cap_rank",
                      "sort_direction": "asc",
                      "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                    }
                  },
                  "last-page": {
                    "summary": "Last page of results — `nextPageToken` is omitted",
                    "value": {
                      "data": [
                        {
                          "symbol": "GBP",
                          "type": "fiat",
                          "name": "Pound Sterling",
                          "status": {
                            "swap_trading": {
                              "enabled": true,
                              "disabled_against": []
                            },
                            "withdraw": {
                              "enabled": true
                            },
                            "deposit": {
                              "enabled": true
                            }
                          },
                          "logo": {
                            "width": 400,
                            "height": 400,
                            "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_gbp.webp",
                            "type": "image/webp"
                          },
                          "decimals": {
                            "funding": 2,
                            "swap": 4
                          },
                          "listing_date": "2013-10-06"
                        }
                      ],
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "page_size": 20,
                      "sort": "market_cap_rank",
                      "sort_direction": "asc"
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/users/AA07%20N84G%20DLNK%20DA3I/assets\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/assets/{asset_type}/{asset_symbol}": {
      "get": {
        "operationId": "getAsset",
        "summary": "Get Asset",
        "tags": ["Assets"],
        "description": "Get information about a specific asset.",
        "parameters": [
          {
            "in": "path",
            "name": "asset_type",
            "required": true,
            "description": "Classification of the asset (`fiat`, `crypto`, `stablecoin`, or `xstock`).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"]
            }
          },
          {
            "in": "path",
            "name": "asset_symbol",
            "required": true,
            "description": "Asset name (e.g., `BTC`, `ETH`, `USD`).",
            "schema": {
              "$ref": "#/components/schemas/AssetSymbol"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": true,
            "description": "ISO 3166-1 alpha-2 country code used to apply geo restrictions (e.g. `US`, `GB`).",
            "schema": {
              "type": "string",
              "pattern": "^[A-Z]{2}$",
              "example": "US"
            }
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "description": "Ticker symbol of the fiat quote asset to use for valuations (e.g. `USD`, `EUR`). Defaults to `USD`.",
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 16,
              "default": "USD",
              "example": "USD"
            }
          },
          {
            "in": "query",
            "name": "quote_type",
            "description": "Classification of the quote asset. Currently only `fiat` is supported.",
            "schema": {
              "type": "string",
              "enum": ["fiat"],
              "default": "fiat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "symbol": {
                          "description": "The ticker symbol of the asset (e.g. `BTC`, `ETH`, `USD`).",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/AssetSymbol"
                            }
                          ]
                        },
                        "type": {
                          "description": "Classification of the asset.",
                          "type": "string",
                          "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                          "example": "crypto"
                        },
                        "name": {
                          "$ref": "#/components/schemas/EnglishName"
                        },
                        "status": {
                          "description": "Per-action availability for this asset. Each sub-block describes whether the asset is currently enabled for that flow and any restrictions that apply.",
                          "type": "object",
                          "properties": {
                            "swap_trading": {
                              "description": "Eligibility for swap trading.",
                              "type": "object",
                              "properties": {
                                "enabled": {
                                  "description": "Whether the asset is currently enabled for swap trading.",
                                  "type": "boolean"
                                },
                                "disabled_against": {
                                  "description": "Assets that cannot be paired with this one in a swap. Empty when the asset can be paired with any other tradable asset.",
                                  "type": "array",
                                  "items": {
                                    "$ref": "#/components/schemas/AssetRef"
                                  }
                                }
                              },
                              "required": ["enabled", "disabled_against"]
                            },
                            "withdraw": {
                              "description": "Eligibility for withdrawals.",
                              "type": "object",
                              "properties": {
                                "enabled": {
                                  "description": "Whether the asset is currently enabled for withdrawal.",
                                  "type": "boolean"
                                }
                              },
                              "required": ["enabled"]
                            },
                            "deposit": {
                              "description": "Eligibility for deposits.",
                              "type": "object",
                              "properties": {
                                "enabled": {
                                  "description": "Whether the asset is currently enabled for deposit.",
                                  "type": "boolean"
                                }
                              },
                              "required": ["enabled"]
                            }
                          },
                          "required": ["swap_trading", "withdraw", "deposit"]
                        },
                        "listing_date": {
                          "description": "The date the asset was first listed on Payward.",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/Date"
                            }
                          ]
                        },
                        "logo": {
                          "$ref": "#/components/schemas/Logo"
                        },
                        "decimals": {
                          "description": "Decimal precision for the asset across funding and swap operations.",
                          "type": "object",
                          "properties": {
                            "funding": {
                              "description": "Number of decimals supported when funding (depositing/withdrawing) this asset on its native protocol.",
                              "$ref": "#/components/schemas/Uint8"
                            },
                            "swap": {
                              "description": "Number of decimals supported when trading this asset via swap.",
                              "$ref": "#/components/schemas/Uint8"
                            }
                          },
                          "required": ["funding", "swap"]
                        },
                        "price": {
                          "$ref": "#/components/schemas/BigDecimal",
                          "description": "The latest price of the asset, in the requested `quote` asset."
                        },
                        "market_cap": {
                          "description": "The current market capitalization of the asset, in the requested `quote` asset.",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/MarketCapValue"
                            }
                          ]
                        },
                        "market_cap_rank": {
                          "description": "The rank of the asset based on the total market capitalization.",
                          "$ref": "#/components/schemas/Uint32"
                        },
                        "trending_rank": {
                          "description": "The trending rank of the asset compared to all other trending assets.",
                          "$ref": "#/components/schemas/Uint32"
                        },
                        "volume": {
                          "description": "Trading volume over recent windows, denominated in the requested `quote` asset.",
                          "type": "object",
                          "properties": {
                            "last_24h": {
                              "$ref": "#/components/schemas/BigDecimal",
                              "description": "The 24-hour trading volume for the asset, in the requested `quote` asset."
                            }
                          }
                        },
                        "supply": {
                          "type": "object",
                          "properties": {
                            "circulating": {
                              "$ref": "#/components/schemas/BigDecimal"
                            },
                            "total": {
                              "$ref": "#/components/schemas/TotalSupply"
                            },
                            "max": {
                              "$ref": "#/components/schemas/MaxSupply"
                            },
                            "in_quote": {
                              "description": "Same supply figures valued at the current market price, denominated in the requested `quote` asset.",
                              "type": "object",
                              "properties": {
                                "circulating": {
                                  "description": "Value of `supply.circulating` in the requested `quote` asset.",
                                  "$ref": "#/components/schemas/BigDecimal"
                                },
                                "total": {
                                  "description": "Value of `supply.total` in the requested `quote` asset.",
                                  "$ref": "#/components/schemas/BigDecimal"
                                },
                                "max": {
                                  "description": "Value of `supply.max` in the requested `quote` asset.",
                                  "$ref": "#/components/schemas/BigDecimal"
                                }
                              }
                            }
                          },
                          "description": "Token supply figures. Quantities are denominated in the asset itself; their valuations in the requested `quote` asset live under `in_quote{}`. Absent when supply data is not applicable (e.g. fiat currencies)."
                        },
                        "price_change_percent": {
                          "type": "object",
                          "properties": {
                            "last_1h": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 1 hour.\n"
                            },
                            "last_24h": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 24 hours.\n"
                            },
                            "last_7d": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 7 days.\n"
                            },
                            "last_30d": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 30 days.\n"
                            },
                            "last_1y": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 1 year.\n"
                            }
                          },
                          "description": "Percentage change in the asset price over each rolling time window."
                        },
                        "ath": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "$ref": "#/components/schemas/AthValue"
                            },
                            "timestamp": {
                              "description": "Timestamp when the asset reached its all-time high price.",
                              "allOf": [
                                {
                                  "$ref": "#/components/schemas/DateTime"
                                }
                              ]
                            }
                          },
                          "description": "All-time-high price for the asset, with the timestamp it was reached."
                        }
                      },
                      "required": ["symbol", "type", "name", "logo", "decimals", "status"]
                    },
                    "quote_symbol": {
                      "description": "Quote asset symbol the prices are denominated in.",
                      "type": "string",
                      "example": "USD"
                    },
                    "quote_type": {
                      "description": "Classification of the quote asset.",
                      "type": "string",
                      "enum": ["fiat"]
                    }
                  },
                  "required": ["data", "quote_symbol", "quote_type"],
                  "example": {
                    "data": {
                      "symbol": "BTC",
                      "type": "crypto",
                      "name": "Bitcoin",
                      "status": {
                        "swap_trading": {
                          "enabled": true,
                          "disabled_against": []
                        },
                        "withdraw": {
                          "enabled": true
                        },
                        "deposit": {
                          "enabled": true
                        }
                      },
                      "listing_date": "2013-09-12",
                      "logo": {
                        "width": 64,
                        "height": 64,
                        "href": "https://assets.payward.com/logos/btc.png",
                        "type": "image/png"
                      },
                      "decimals": {
                        "funding": 8,
                        "swap": 8
                      },
                      "price": "67234.18",
                      "market_cap": "1325840000000",
                      "market_cap_rank": 1,
                      "trending_rank": 3,
                      "volume": {
                        "last_24h": "38421000000"
                      },
                      "supply": {
                        "circulating": "19720893",
                        "total": "19720893",
                        "max": "21000000",
                        "in_quote": {
                          "circulating": "1325840000000",
                          "total": "1325840000000",
                          "max": "1411917780000"
                        }
                      },
                      "price_change_percent": {
                        "last_1h": "0.21",
                        "last_24h": "1.84",
                        "last_7d": "-2.13",
                        "last_30d": "6.42",
                        "last_1y": "78.34"
                      },
                      "ath": {
                        "value": "73750.07",
                        "timestamp": "2024-03-14T14:08:00Z"
                      }
                    }
                  }
                },
                "examples": {
                  "btc": {
                    "summary": "Full BTC asset payload for an unrestricted user",
                    "value": {
                      "data": {
                        "symbol": "BTC",
                        "type": "crypto",
                        "name": "Bitcoin",
                        "status": {
                          "swap_trading": {
                            "enabled": true,
                            "disabled_against": [
                              {
                                "symbol": "USDT",
                                "type": "stablecoin",
                                "name": "Tether USD"
                              },
                              {
                                "symbol": "SOL",
                                "type": "crypto",
                                "name": "Solana"
                              }
                            ]
                          },
                          "withdraw": {
                            "enabled": true
                          },
                          "deposit": {
                            "enabled": true
                          }
                        },
                        "logo": {
                          "width": 400,
                          "height": 400,
                          "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_btc.webp",
                          "type": "image/webp"
                        },
                        "decimals": {
                          "funding": 8,
                          "swap": 10
                        },
                        "listing_date": "2013-10-06",
                        "price": "62081",
                        "market_cap": "1244183483835",
                        "market_cap_rank": 1,
                        "trending_rank": 66,
                        "volume": {
                          "last_24h": "53096507160"
                        },
                        "supply": {
                          "circulating": "20038918",
                          "total": "20038918",
                          "max": "21000000",
                          "in_quote": {
                            "circulating": "1244036068358",
                            "total": "1244036068358",
                            "max": "1303701000000"
                          }
                        },
                        "price_change_percent": {
                          "last_1h": "-0.312449",
                          "last_24h": "-0.584983",
                          "last_7d": "-15.616145",
                          "last_30d": "-24.558477",
                          "last_1y": "-40.690849"
                        },
                        "ath": {
                          "value": "126080",
                          "timestamp": "2025-10-06T18:57:42Z"
                        }
                      },
                      "quote_symbol": "USD",
                      "quote_type": "fiat"
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/assets/stablecoin/USDC\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/assets/{asset_type}/{asset_symbol}": {
      "get": {
        "operationId": "getUserAsset",
        "summary": "Get User Asset",
        "tags": ["Assets"],
        "description": "Get information about a specific asset.",
        "parameters": [
          {
            "in": "path",
            "name": "user_id",
            "description": "User Iiban",
            "schema": {
              "type": "string",
              "example": "AA07 N84G DLNK DA3I"
            },
            "example": "AA07 N84G DLNK DA3I",
            "x-selected-account": true,
            "style": "simple",
            "required": true
          },
          {
            "in": "path",
            "name": "asset_type",
            "required": true,
            "description": "Classification of the asset (`fiat`, `crypto`, `stablecoin`, or `xstock`).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"]
            }
          },
          {
            "in": "path",
            "name": "asset_symbol",
            "required": true,
            "description": "Asset name (e.g., `BTC`, `ETH`, `USD`).",
            "schema": {
              "$ref": "#/components/schemas/AssetSymbol"
            }
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "description": "Ticker symbol of the fiat quote asset to use for valuations (e.g. `USD`, `EUR`). Defaults to `USD`.",
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 16,
              "default": "USD",
              "example": "USD"
            }
          },
          {
            "in": "query",
            "name": "quote_type",
            "description": "Classification of the quote asset. Currently only `fiat` is supported.",
            "schema": {
              "type": "string",
              "enum": ["fiat"],
              "default": "fiat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "symbol": {
                          "description": "The ticker symbol of the asset (e.g. `BTC`, `ETH`, `USD`).",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/AssetSymbol"
                            }
                          ]
                        },
                        "type": {
                          "description": "Classification of the asset.",
                          "type": "string",
                          "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                          "example": "crypto"
                        },
                        "name": {
                          "$ref": "#/components/schemas/EnglishName"
                        },
                        "status": {
                          "description": "Per-action availability for this asset. Each sub-block describes whether the asset is currently enabled for that flow and any restrictions that apply.",
                          "type": "object",
                          "properties": {
                            "swap_trading": {
                              "description": "Eligibility for swap trading.",
                              "type": "object",
                              "properties": {
                                "enabled": {
                                  "description": "Whether the asset is currently enabled for swap trading.",
                                  "type": "boolean"
                                },
                                "disabled_against": {
                                  "description": "Assets that cannot be paired with this one in a swap. Empty when the asset can be paired with any other tradable asset.",
                                  "type": "array",
                                  "items": {
                                    "$ref": "#/components/schemas/AssetRef"
                                  }
                                }
                              },
                              "required": ["enabled", "disabled_against"]
                            },
                            "withdraw": {
                              "description": "Eligibility for withdrawals.",
                              "type": "object",
                              "properties": {
                                "enabled": {
                                  "description": "Whether the asset is currently enabled for withdrawal.",
                                  "type": "boolean"
                                }
                              },
                              "required": ["enabled"]
                            },
                            "deposit": {
                              "description": "Eligibility for deposits.",
                              "type": "object",
                              "properties": {
                                "enabled": {
                                  "description": "Whether the asset is currently enabled for deposit.",
                                  "type": "boolean"
                                }
                              },
                              "required": ["enabled"]
                            }
                          },
                          "required": ["swap_trading", "withdraw", "deposit"]
                        },
                        "listing_date": {
                          "description": "The date the asset was first listed on Payward.",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/Date"
                            }
                          ]
                        },
                        "logo": {
                          "$ref": "#/components/schemas/Logo"
                        },
                        "decimals": {
                          "description": "Decimal precision for the asset across funding and swap operations.",
                          "type": "object",
                          "properties": {
                            "funding": {
                              "description": "Number of decimals supported when funding (depositing/withdrawing) this asset on its native protocol.",
                              "$ref": "#/components/schemas/Uint8"
                            },
                            "swap": {
                              "description": "Number of decimals supported when trading this asset via swap.",
                              "$ref": "#/components/schemas/Uint8"
                            }
                          },
                          "required": ["funding", "swap"]
                        },
                        "price": {
                          "$ref": "#/components/schemas/BigDecimal",
                          "description": "The latest price of the asset, in the requested `quote` asset."
                        },
                        "market_cap": {
                          "description": "The current market capitalization of the asset, in the requested `quote` asset.",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/MarketCapValue"
                            }
                          ]
                        },
                        "market_cap_rank": {
                          "description": "The rank of the asset based on the total market capitalization.",
                          "$ref": "#/components/schemas/Uint32"
                        },
                        "trending_rank": {
                          "description": "The trending rank of the asset compared to all other trending assets.",
                          "$ref": "#/components/schemas/Uint32"
                        },
                        "volume": {
                          "description": "Trading volume over recent windows, denominated in the requested `quote` asset.",
                          "type": "object",
                          "properties": {
                            "last_24h": {
                              "$ref": "#/components/schemas/BigDecimal",
                              "description": "The 24-hour trading volume for the asset, in the requested `quote` asset."
                            }
                          }
                        },
                        "supply": {
                          "type": "object",
                          "properties": {
                            "circulating": {
                              "$ref": "#/components/schemas/BigDecimal"
                            },
                            "total": {
                              "$ref": "#/components/schemas/TotalSupply"
                            },
                            "max": {
                              "$ref": "#/components/schemas/MaxSupply"
                            },
                            "in_quote": {
                              "description": "Same supply figures valued at the current market price, denominated in the requested `quote` asset.",
                              "type": "object",
                              "properties": {
                                "circulating": {
                                  "description": "Value of `supply.circulating` in the requested `quote` asset.",
                                  "$ref": "#/components/schemas/BigDecimal"
                                },
                                "total": {
                                  "description": "Value of `supply.total` in the requested `quote` asset.",
                                  "$ref": "#/components/schemas/BigDecimal"
                                },
                                "max": {
                                  "description": "Value of `supply.max` in the requested `quote` asset.",
                                  "$ref": "#/components/schemas/BigDecimal"
                                }
                              }
                            }
                          },
                          "description": "Token supply figures. Quantities are denominated in the asset itself; their valuations in the requested `quote` asset live under `in_quote{}`. Absent when supply data is not applicable (e.g. fiat currencies)."
                        },
                        "price_change_percent": {
                          "type": "object",
                          "properties": {
                            "last_1h": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 1 hour.\n"
                            },
                            "last_24h": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 24 hours.\n"
                            },
                            "last_7d": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 7 days.\n"
                            },
                            "last_30d": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 30 days.\n"
                            },
                            "last_1y": {
                              "$ref": "#/components/schemas/Percentage",
                              "description": "The price change percentage over the last 1 year.\n"
                            }
                          },
                          "description": "Percentage change in the asset price over each rolling time window."
                        },
                        "ath": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "$ref": "#/components/schemas/AthValue"
                            },
                            "timestamp": {
                              "description": "Timestamp when the asset reached its all-time high price.",
                              "allOf": [
                                {
                                  "$ref": "#/components/schemas/DateTime"
                                }
                              ]
                            }
                          },
                          "description": "All-time-high price for the asset, with the timestamp it was reached."
                        }
                      },
                      "required": ["symbol", "type", "name", "logo", "decimals", "status"]
                    },
                    "quote_symbol": {
                      "description": "Quote asset symbol the prices are denominated in.",
                      "type": "string",
                      "example": "USD"
                    },
                    "quote_type": {
                      "description": "Classification of the quote asset.",
                      "type": "string",
                      "enum": ["fiat"]
                    }
                  },
                  "required": ["data", "quote_symbol", "quote_type"],
                  "example": {
                    "data": {
                      "symbol": "BTC",
                      "type": "crypto",
                      "name": "Bitcoin",
                      "status": {
                        "swap_trading": {
                          "enabled": true,
                          "disabled_against": []
                        },
                        "withdraw": {
                          "enabled": true
                        },
                        "deposit": {
                          "enabled": true
                        }
                      },
                      "listing_date": "2013-09-12",
                      "logo": {
                        "width": 64,
                        "height": 64,
                        "href": "https://assets.payward.com/logos/btc.png",
                        "type": "image/png"
                      },
                      "decimals": {
                        "funding": 8,
                        "swap": 8
                      },
                      "price": "67234.18",
                      "market_cap": "1325840000000",
                      "market_cap_rank": 1,
                      "trending_rank": 3,
                      "volume": {
                        "last_24h": "38421000000"
                      },
                      "supply": {
                        "circulating": "19720893",
                        "total": "19720893",
                        "max": "21000000",
                        "in_quote": {
                          "circulating": "1325840000000",
                          "total": "1325840000000",
                          "max": "1411917780000"
                        }
                      },
                      "price_change_percent": {
                        "last_1h": "0.21",
                        "last_24h": "1.84",
                        "last_7d": "-2.13",
                        "last_30d": "6.42",
                        "last_1y": "78.34"
                      },
                      "ath": {
                        "value": "73750.07",
                        "timestamp": "2024-03-14T14:08:00Z"
                      }
                    }
                  }
                },
                "examples": {
                  "btc": {
                    "summary": "Full BTC asset payload for an unrestricted user",
                    "value": {
                      "data": {
                        "symbol": "BTC",
                        "type": "crypto",
                        "name": "Bitcoin",
                        "status": {
                          "swap_trading": {
                            "enabled": true,
                            "disabled_against": [
                              {
                                "symbol": "USDT",
                                "type": "stablecoin",
                                "name": "Tether USD"
                              },
                              {
                                "symbol": "SOL",
                                "type": "crypto",
                                "name": "Solana"
                              }
                            ]
                          },
                          "withdraw": {
                            "enabled": true
                          },
                          "deposit": {
                            "enabled": true
                          }
                        },
                        "logo": {
                          "width": 400,
                          "height": 400,
                          "href": "https://assets.kraken.com/marketing/web/icons-uni-webp/s_btc.webp",
                          "type": "image/webp"
                        },
                        "decimals": {
                          "funding": 8,
                          "swap": 10
                        },
                        "listing_date": "2013-10-06",
                        "price": "62081",
                        "market_cap": "1244183483835",
                        "market_cap_rank": 1,
                        "trending_rank": 66,
                        "volume": {
                          "last_24h": "53096507160"
                        },
                        "supply": {
                          "circulating": "20038918",
                          "total": "20038918",
                          "max": "21000000",
                          "in_quote": {
                            "circulating": "1244036068358",
                            "total": "1244036068358",
                            "max": "1303701000000"
                          }
                        },
                        "price_change_percent": {
                          "last_1h": "-0.312449",
                          "last_24h": "-0.584983",
                          "last_7d": "-15.616145",
                          "last_30d": "-24.558477",
                          "last_1y": "-40.690849"
                        },
                        "ath": {
                          "value": "126080",
                          "timestamp": "2025-10-06T18:57:42Z"
                        }
                      },
                      "quote_symbol": "USD",
                      "quote_type": "fiat"
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/users/AA07%20N84G%20DLNK%20DA3I/assets/stablecoin/USDC\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/assets/{asset_type}/{asset_symbol}/rates": {
      "get": {
        "operationId": "listAssetRates",
        "summary": "List Asset Rates",
        "tags": ["Assets"],
        "description": "Returns historical rates for a given asset.\n\nThe response includes a timestamp and price for each interval in the requested time window. Use `quote_symbol` and `quote_type` to choose the asset used for pricing.",
        "parameters": [
          {
            "in": "path",
            "name": "asset_type",
            "required": true,
            "description": "Classification of the asset (`fiat`, `crypto`, `stablecoin`, or `xstock`).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"]
            }
          },
          {
            "in": "path",
            "name": "asset_symbol",
            "required": true,
            "description": "Asset name (e.g., `BTC`, `ETH`, `USD`).",
            "schema": {
              "$ref": "#/components/schemas/AssetSymbol"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": true,
            "description": "ISO 3166-1 alpha-2 country code used to apply geo restrictions (e.g. `US`, `GB`).",
            "schema": {
              "type": "string",
              "pattern": "^[A-Z]{2}$",
              "example": "US"
            }
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "description": "Ticker symbol of the fiat quote asset to use for valuations (e.g. `USD`, `EUR`). Defaults to `USD`.",
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 16,
              "default": "USD",
              "example": "USD"
            }
          },
          {
            "in": "query",
            "name": "quote_type",
            "description": "Classification of the quote asset. Currently only `fiat` is supported.",
            "schema": {
              "type": "string",
              "enum": ["fiat"],
              "default": "fiat"
            }
          },
          {
            "in": "query",
            "name": "start_timestamp",
            "description": "Start of the time window (inclusive). Only results whose timestamp is greater than or equal to `start_timestamp` are returned.",
            "deprecated": false,
            "schema": {
              "type": ["string", "null"],
              "format": "date-time",
              "example": "2025-06-30T00:00:00.000Z"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "end_timestamp",
            "description": "End of the time window (exclusive). Only results whose timestamp is strictly less than `end_timestamp` are returned.",
            "deprecated": false,
            "schema": {
              "type": ["string", "null"],
              "format": "date-time",
              "example": "2025-06-30T00:00:00.000Z"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "interval",
            "description": "If provided, shows the history of the asset in the given interval.\n\nShould be in the format of an [ISO 8601 duration].\n\nSupported resolutions: 1min, 5min, 15min, 30min, 60min, 4H, 1D, 7D, 15D\n",
            "deprecated": false,
            "schema": {
              "type": ["string", "null"],
              "format": "duration",
              "example": "PT15M"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return on a single page.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response's `next_page_token`. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "List of historical records",
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PriceTick"
                      }
                    },
                    "quote_symbol": {
                      "description": "The asset used as the quote currency for all rates in `data`. Echoes the `quote_symbol` query parameter (or its default).",
                      "type": "string",
                      "maxLength": 16,
                      "example": "USD"
                    },
                    "quote_type": {
                      "description": "Classification of the quote asset. Echoes the `quote_type` query parameter (or its default).",
                      "type": "string",
                      "enum": ["fiat"]
                    },
                    "start_timestamp": {
                      "description": "Start of the time window covered by `data`. Echoes the `start_timestamp` query parameter (or its default).",
                      "type": "string",
                      "format": "date-time"
                    },
                    "end_timestamp": {
                      "description": "End of the time window covered by `data`. Echoes the `end_timestamp` query parameter (or its default).",
                      "type": "string",
                      "format": "date-time"
                    },
                    "interval": {
                      "description": "Granularity of each row in `data`. Echoes the `interval` query parameter.",
                      "type": ["string", "null"],
                      "format": "duration",
                      "example": "PT15M"
                    },
                    "page_size": {
                      "description": "Maximum number of results returned on this page. Echoes the `page_size` query parameter (or its default).",
                      "type": "integer",
                      "format": "int32",
                      "minimum": 1,
                      "maximum": 100
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": [
                    "data",
                    "quote_symbol",
                    "quote_type",
                    "start_timestamp",
                    "end_timestamp",
                    "interval",
                    "page_size"
                  ],
                  "example": {
                    "data": [
                      {
                        "timestamp": "2026-04-21T00:00:00Z",
                        "price": "64218.34"
                      },
                      {
                        "timestamp": "2026-04-22T00:00:00Z",
                        "price": "64902.11"
                      },
                      {
                        "timestamp": "2026-04-23T00:00:00Z",
                        "price": "65430.78"
                      },
                      {
                        "timestamp": "2026-04-24T00:00:00Z",
                        "price": "66120.05"
                      },
                      {
                        "timestamp": "2026-04-25T00:00:00Z",
                        "price": "66890.42"
                      },
                      {
                        "timestamp": "2026-04-26T00:00:00Z",
                        "price": "67234.18"
                      }
                    ],
                    "quote_symbol": "USD",
                    "quote_type": "fiat",
                    "start_timestamp": "2026-04-21T00:00:00Z",
                    "end_timestamp": "2026-04-26T23:59:59Z",
                    "interval": "P1D",
                    "page_size": 20,
                    "next_page_token": null
                  }
                },
                "examples": {
                  "btc-15m-window": {
                    "summary": "Two 15-minute candles for BTC priced in USD",
                    "value": {
                      "data": [
                        {
                          "timestamp": "2026-01-01T00:00:00Z",
                          "midpoint": "94250.12"
                        },
                        {
                          "timestamp": "2026-01-01T00:15:00Z",
                          "midpoint": "94381.50"
                        }
                      ],
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "start_timestamp": "2026-01-01T00:00:00Z",
                      "end_timestamp": "2026-01-01T00:30:00Z",
                      "interval": "PT15M",
                      "page_size": 20
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/assets/stablecoin/USDC/rates\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/assets/{asset_type}/{asset_symbol}/rates": {
      "get": {
        "operationId": "listUserAssetRates",
        "summary": "List User Asset Rates",
        "tags": ["Assets"],
        "description": "Returns historical rates for a given asset.\n\nThe response includes a timestamp and price for each interval in the requested time window. Use `quote_symbol` and `quote_type` to choose the asset used for pricing.",
        "parameters": [
          {
            "in": "path",
            "name": "user_id",
            "description": "User Iiban",
            "schema": {
              "type": "string",
              "example": "AA07 N84G DLNK DA3I"
            },
            "example": "AA07 N84G DLNK DA3I",
            "x-selected-account": true,
            "style": "simple",
            "required": true
          },
          {
            "in": "path",
            "name": "asset_type",
            "required": true,
            "description": "Classification of the asset (`fiat`, `crypto`, `stablecoin`, or `xstock`).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"]
            }
          },
          {
            "in": "path",
            "name": "asset_symbol",
            "required": true,
            "description": "Asset name (e.g., `BTC`, `ETH`, `USD`).",
            "schema": {
              "$ref": "#/components/schemas/AssetSymbol"
            }
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "description": "Ticker symbol of the fiat quote asset to use for valuations (e.g. `USD`, `EUR`). Defaults to `USD`.",
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 16,
              "default": "USD",
              "example": "USD"
            }
          },
          {
            "in": "query",
            "name": "quote_type",
            "description": "Classification of the quote asset. Currently only `fiat` is supported.",
            "schema": {
              "type": "string",
              "enum": ["fiat"],
              "default": "fiat"
            }
          },
          {
            "in": "query",
            "name": "start_timestamp",
            "description": "Start of the time window (inclusive). Only results whose timestamp is greater than or equal to `start_timestamp` are returned.",
            "deprecated": false,
            "schema": {
              "type": ["string", "null"],
              "format": "date-time",
              "example": "2025-06-30T00:00:00.000Z"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "end_timestamp",
            "description": "End of the time window (exclusive). Only results whose timestamp is strictly less than `end_timestamp` are returned.",
            "deprecated": false,
            "schema": {
              "type": ["string", "null"],
              "format": "date-time",
              "example": "2025-06-30T00:00:00.000Z"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "interval",
            "description": "If provided, shows the history of the asset in the given interval.\n\nShould be in the format of an [ISO 8601 duration].\n\nSupported resolutions: 1min, 5min, 15min, 30min, 60min, 4H, 1D, 7D, 15D\n",
            "deprecated": false,
            "schema": {
              "type": ["string", "null"],
              "format": "duration",
              "example": "PT15M"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return on a single page.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response's `next_page_token`. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "List of historical records",
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PriceTick"
                      }
                    },
                    "quote_symbol": {
                      "description": "The asset used as the quote currency for all rates in `data`. Echoes the `quote_symbol` query parameter (or its default).",
                      "type": "string",
                      "maxLength": 16,
                      "example": "USD"
                    },
                    "quote_type": {
                      "description": "Classification of the quote asset. Echoes the `quote_type` query parameter (or its default).",
                      "type": "string",
                      "enum": ["fiat"]
                    },
                    "start_timestamp": {
                      "description": "Start of the time window covered by `data`. Echoes the `start_timestamp` query parameter (or its default).",
                      "type": "string",
                      "format": "date-time"
                    },
                    "end_timestamp": {
                      "description": "End of the time window covered by `data`. Echoes the `end_timestamp` query parameter (or its default).",
                      "type": "string",
                      "format": "date-time"
                    },
                    "interval": {
                      "description": "Granularity of each row in `data`. Echoes the `interval` query parameter.",
                      "type": ["string", "null"],
                      "format": "duration",
                      "example": "PT15M"
                    },
                    "page_size": {
                      "description": "Maximum number of results returned on this page. Echoes the `page_size` query parameter (or its default).",
                      "type": "integer",
                      "format": "int32",
                      "minimum": 1,
                      "maximum": 100
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": [
                    "data",
                    "quote_symbol",
                    "quote_type",
                    "start_timestamp",
                    "end_timestamp",
                    "interval",
                    "page_size"
                  ],
                  "example": {
                    "data": [
                      {
                        "timestamp": "2026-04-21T00:00:00Z",
                        "price": "64218.34"
                      },
                      {
                        "timestamp": "2026-04-22T00:00:00Z",
                        "price": "64902.11"
                      },
                      {
                        "timestamp": "2026-04-23T00:00:00Z",
                        "price": "65430.78"
                      },
                      {
                        "timestamp": "2026-04-24T00:00:00Z",
                        "price": "66120.05"
                      },
                      {
                        "timestamp": "2026-04-25T00:00:00Z",
                        "price": "66890.42"
                      },
                      {
                        "timestamp": "2026-04-26T00:00:00Z",
                        "price": "67234.18"
                      }
                    ],
                    "quote_symbol": "USD",
                    "quote_type": "fiat",
                    "start_timestamp": "2026-04-21T00:00:00Z",
                    "end_timestamp": "2026-04-26T23:59:59Z",
                    "interval": "P1D",
                    "page_size": 20,
                    "next_page_token": null
                  }
                },
                "examples": {
                  "btc-15m-window": {
                    "summary": "Two 15-minute candles for BTC priced in USD",
                    "value": {
                      "data": [
                        {
                          "timestamp": "2026-01-01T00:00:00Z",
                          "midpoint": "94250.12"
                        },
                        {
                          "timestamp": "2026-01-01T00:15:00Z",
                          "midpoint": "94381.50"
                        }
                      ],
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "start_timestamp": "2026-01-01T00:00:00Z",
                      "end_timestamp": "2026-01-01T00:30:00Z",
                      "interval": "PT15M",
                      "page_size": 20
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Permission denied",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/users/AA07%20N84G%20DLNK%20DA3I/assets/stablecoin/USDC/rates\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/conversions": {
      "get": {
        "tags": ["Conversion rules"],
        "description": "Lists conversion rules for the caller, ordered by `created_at` descending.",
        "operationId": "listConversionRules",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "Internet International Bank Account Number identifying the PWS account\nthe conversion rule belongs to.",
              "type": "string",
              "minLength": 14,
              "maxLength": 42
            },
            "style": "simple",
            "example": "AA23N84GGQN4WE6I"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "description": "Restrict results to conversion rules in this lifecycle state (`active` or\n`paused`). Soft-deleted conversion rules are never returned — they surface\nas `404 NotFound` on `GetConversionRule` instead.",
              "type": "string",
              "enum": ["active", "paused", "provisioning"],
              "title": "ConversionRuleStatus"
            },
            "style": "form",
            "example": "active"
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return on a single page. Defaults to 20,\nmaximum 25.\n\nPer-field `rename` overrides the message-level `RENAME_ALL_SNAKE_CASE`:\nquery-string parameter names must be snake_case under the PWS spec\n(Spectral `pws-parameter-names-snake-case`), even though body fields\nare camelCase.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form",
            "example": 20
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque cursor returned by a previous response's `next_page_token`. Omit\nto start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Conversion rules on this page, ordered by `created_at` descending.",
                      "type": "array",
                      "items": {
                        "description": "Full representation of a conversion rule.\n\nA conversion rule is the long-lived intent to convert one asset into another.\n`from` and `to` share the same `ConversionEndpoint` shape; for\n`wallet`/`bank` sources the inbound `address` or `bank_account` on\n`from` is populated by the service when autoramp provisions the\ninbound endpoint.",
                        "type": "object",
                        "properties": {
                          "id": {
                            "description": "Unique identifier for this conversion rule.",
                            "type": "string",
                            "format": "uuid"
                          },
                          "name": {
                            "description": "Optional partner-facing label for the conversion rule.",
                            "type": "string"
                          },
                          "from": {
                            "description": "Source side. On reads, `address`/`bank_account` are populated by the\nservice from the autoramp-provisioned inbound (where partner deposits\nfunds). On writes, those fields are ignored — partners only specify\nsymbol, type, and via on the source side.",
                            "type": "object",
                            "properties": {
                              "symbol": {
                                "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 16
                              },
                              "type": {
                                "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                                "type": "string",
                                "enum": ["wallet", "bank"],
                                "title": "EndpointType"
                              },
                              "wallet": {
                                "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                                "type": "object",
                                "properties": {
                                  "via": {
                                    "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 32
                                  },
                                  "address": {
                                    "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 256
                                  },
                                  "memo": {
                                    "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "tag": {
                                    "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["via"],
                                "title": "Wallet"
                              },
                              "bank_account": {
                                "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                                "type": "object",
                                "properties": {
                                  "via": {
                                    "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 32
                                  },
                                  "bank": {
                                    "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                                    "type": "string",
                                    "maxLength": 256
                                  },
                                  "iban": {
                                    "description": "International Bank Account Number (SEPA, SWIFT).",
                                    "type": "string",
                                    "minLength": 14,
                                    "maxLength": 42
                                  },
                                  "bic": {
                                    "description": "Bank Identifier Code (SEPA, SWIFT).",
                                    "type": "string",
                                    "minLength": 8,
                                    "maxLength": 11
                                  },
                                  "sort_code": {
                                    "description": "UK sort code (FPS).",
                                    "type": "string",
                                    "minLength": 6,
                                    "maxLength": 8
                                  },
                                  "account_number": {
                                    "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 34
                                  },
                                  "routing_number": {
                                    "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 32
                                  },
                                  "swift": {
                                    "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                    "type": "string",
                                    "minLength": 8,
                                    "maxLength": 11
                                  },
                                  "payee_name": {
                                    "description": "Payee / account-holder name on the provisioned inbound (named account).\nPopulated once the virtual account is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response carries it only when the account was already\nprovisioned at creation time. Rejected on a destination.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 140
                                  },
                                  "bank_address": {
                                    "description": "Bank / EMI address on the provisioned inbound. Populated once the virtual\naccount is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response\ncarries it only when the account was already provisioned at creation\ntime. Rejected on a destination.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 256
                                  },
                                  "payee_address": {
                                    "description": "Payee's registered postal address on the provisioned inbound (on-ramp\nsource only) — distinct from `bank_address`, which is the bank / EMI\naddress. Populated once the virtual account is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response carries it only when the account was\nalready provisioned at creation time. Rejected on a destination.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 256
                                  }
                                },
                                "required": ["via"],
                                "title": "BankAccount"
                              }
                            },
                            "required": ["type"],
                            "title": "ConversionEndpoint"
                          },
                          "to": {
                            "description": "Destination side. `address`/`bank_account` are partner-supplied.",
                            "type": "object",
                            "properties": {
                              "symbol": {
                                "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 16
                              },
                              "type": {
                                "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                                "type": "string",
                                "enum": ["wallet", "bank"],
                                "title": "EndpointType"
                              },
                              "wallet": {
                                "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                                "type": "object",
                                "properties": {
                                  "via": {
                                    "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 32
                                  },
                                  "address": {
                                    "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 256
                                  },
                                  "memo": {
                                    "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "tag": {
                                    "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["via"],
                                "title": "Wallet"
                              },
                              "bank_account": {
                                "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                                "type": "object",
                                "properties": {
                                  "via": {
                                    "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 32
                                  },
                                  "bank": {
                                    "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                                    "type": "string",
                                    "maxLength": 256
                                  },
                                  "iban": {
                                    "description": "International Bank Account Number (SEPA, SWIFT).",
                                    "type": "string",
                                    "minLength": 14,
                                    "maxLength": 42
                                  },
                                  "bic": {
                                    "description": "Bank Identifier Code (SEPA, SWIFT).",
                                    "type": "string",
                                    "minLength": 8,
                                    "maxLength": 11
                                  },
                                  "sort_code": {
                                    "description": "UK sort code (FPS).",
                                    "type": "string",
                                    "minLength": 6,
                                    "maxLength": 8
                                  },
                                  "account_number": {
                                    "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 34
                                  },
                                  "routing_number": {
                                    "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 32
                                  },
                                  "swift": {
                                    "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                    "type": "string",
                                    "minLength": 8,
                                    "maxLength": 11
                                  }
                                },
                                "required": ["via"],
                                "title": "BankAccount"
                              }
                            },
                            "required": ["type"],
                            "title": "ConversionEndpoint"
                          },
                          "status": {
                            "description": "Lifecycle status (active | paused).",
                            "type": "string",
                            "enum": ["active", "paused", "provisioning"]
                          },
                          "created_at": {
                            "$ref": "#/components/schemas/google.protobuf.Timestamp"
                          },
                          "updated_at": {
                            "$ref": "#/components/schemas/google.protobuf.Timestamp"
                          }
                        },
                        "required": ["id", "from", "to", "status", "created_at", "updated_at"],
                        "title": "ConversionRule"
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque cursor for the next page of results. Absent when there are no\nmore pages.",
                      "type": "string"
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "id-list-conversion-rules-ok": {
                    "summary": "ListConversionRules returns the parrot-stubbed rule expanded to the full conversion rule shape",
                    "value": {
                      "data": [
                        {
                          "id": "550e8400-e29b-41d4-a716-446655440000",
                          "name": "EUR autoramp to Polygon vault",
                          "from": {
                            "symbol": "EUR",
                            "type": "bank",
                            "bank_account": {
                              "via": "sepa",
                              "iban": "DE89370400440532013000",
                              "bic": "COBADEFFXXX",
                              "payee_name": "Delta Commerce B.V.",
                              "bank_address": "Borschestraat 12, Amsterdam",
                              "payee_address": "71 Sir John Rogerson's Quay, Dublin, D02 R296, Ireland"
                            }
                          },
                          "to": {
                            "symbol": "USDC",
                            "type": "wallet",
                            "wallet": {
                              "via": "polygon",
                              "address": "0x1234567890abcdef1234567890abcdef12345678"
                            }
                          },
                          "status": "active",
                          "created_at": "2026-05-25T10:30:00Z",
                          "updated_at": "2026-05-25T10:30:00Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversionsNotFoundErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "List conversion rules"
      },
      "post": {
        "tags": ["Conversion rules"],
        "description": "Creates a new conversion rule. Provisions the inbound deposit endpoint\n(IBAN for fiat-source, crypto address for crypto-source) the caller\nwill fund. Once funded, transactions are produced against this\nconversion rule and become observable via the transactions surface.",
        "operationId": "createConversionRule",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "Internet International Bank Account Number identifying the PWS account\nthe conversion rule belongs to.",
              "type": "string",
              "minLength": 14,
              "maxLength": 42
            },
            "style": "simple",
            "example": "AA23N84GGQN4WE6I"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to create a new conversion rule.",
                "type": "object",
                "properties": {
                  "name": {
                    "description": "Optional partner-facing label for the conversion rule.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128
                  },
                  "from": {
                    "description": "Source side. Partners only specify `symbol`, `type`, and `via` here\n— any `address`/`bank_account` supplied is ignored (the inbound is\nprovisioned by autoramp).",
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 16
                      },
                      "type": {
                        "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                        "type": "string",
                        "enum": ["wallet", "bank"],
                        "title": "EndpointType"
                      },
                      "wallet": {
                        "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                        "type": "object",
                        "properties": {
                          "via": {
                            "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "address": {
                            "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "memo": {
                            "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "tag": {
                            "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                          }
                        },
                        "required": ["via"],
                        "title": "Wallet"
                      },
                      "bank_account": {
                        "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                        "type": "object",
                        "properties": {
                          "via": {
                            "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "bank": {
                            "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                            "type": "string",
                            "maxLength": 256
                          },
                          "iban": {
                            "description": "International Bank Account Number (SEPA, SWIFT).",
                            "type": "string",
                            "minLength": 14,
                            "maxLength": 42
                          },
                          "bic": {
                            "description": "Bank Identifier Code (SEPA, SWIFT).",
                            "type": "string",
                            "minLength": 8,
                            "maxLength": 11
                          },
                          "sort_code": {
                            "description": "UK sort code (FPS).",
                            "type": "string",
                            "minLength": 6,
                            "maxLength": 8
                          },
                          "account_number": {
                            "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 34
                          },
                          "routing_number": {
                            "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "swift": {
                            "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                            "type": "string",
                            "minLength": 8,
                            "maxLength": 11
                          }
                        },
                        "required": ["via"],
                        "title": "BankAccount"
                      }
                    },
                    "required": ["symbol", "type"],
                    "title": "ConversionEndpoint"
                  },
                  "to": {
                    "description": "Destination side. Requires `address` (wallet) or `bank_account` (bank).",
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 16
                      },
                      "type": {
                        "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                        "type": "string",
                        "enum": ["wallet", "bank"],
                        "title": "EndpointType"
                      },
                      "wallet": {
                        "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                        "type": "object",
                        "properties": {
                          "via": {
                            "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "address": {
                            "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "memo": {
                            "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "tag": {
                            "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                          }
                        },
                        "required": ["via"],
                        "title": "Wallet"
                      },
                      "bank_account": {
                        "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                        "type": "object",
                        "properties": {
                          "via": {
                            "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "bank": {
                            "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                            "type": "string",
                            "maxLength": 256
                          },
                          "iban": {
                            "description": "International Bank Account Number (SEPA, SWIFT).",
                            "type": "string",
                            "minLength": 14,
                            "maxLength": 42
                          },
                          "bic": {
                            "description": "Bank Identifier Code (SEPA, SWIFT).",
                            "type": "string",
                            "minLength": 8,
                            "maxLength": 11
                          },
                          "sort_code": {
                            "description": "UK sort code (FPS).",
                            "type": "string",
                            "minLength": 6,
                            "maxLength": 8
                          },
                          "account_number": {
                            "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 34
                          },
                          "routing_number": {
                            "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "swift": {
                            "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                            "type": "string",
                            "minLength": 8,
                            "maxLength": 11
                          }
                        },
                        "required": ["via"],
                        "title": "BankAccount"
                      }
                    },
                    "required": ["symbol", "type"],
                    "title": "ConversionEndpoint"
                  }
                },
                "required": ["from", "to"]
              },
              "examples": {
                "id-create-conversion-rule-ok": {
                  "summary": "CreateConversionRule returns the parrot-stubbed rule with provisioned inbound on `from`",
                  "value": {
                    "name": "EUR autoramp to Polygon vault",
                    "from": {
                      "symbol": "EUR",
                      "type": "bank",
                      "bank_account": {
                        "via": "sepa"
                      }
                    },
                    "to": {
                      "symbol": "USDC",
                      "type": "wallet",
                      "wallet": {
                        "via": "polygon",
                        "address": "0x1234567890abcdef1234567890abcdef12345678"
                      }
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "The newly created conversion rule.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Unique identifier for this conversion rule.",
                          "type": "string",
                          "format": "uuid"
                        },
                        "name": {
                          "description": "Optional partner-facing label for the conversion rule.",
                          "type": "string"
                        },
                        "from": {
                          "description": "Source side. On reads, `address`/`bank_account` are populated by the\nservice from the autoramp-provisioned inbound (where partner deposits\nfunds). On writes, those fields are ignored — partners only specify\nsymbol, type, and via on the source side.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 16
                            },
                            "type": {
                              "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                              "type": "string",
                              "enum": ["wallet", "bank"],
                              "title": "EndpointType"
                            },
                            "wallet": {
                              "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "address": {
                                  "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "memo": {
                                  "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                },
                                "tag": {
                                  "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                }
                              },
                              "required": ["via"],
                              "title": "Wallet"
                            },
                            "bank_account": {
                              "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "bank": {
                                  "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                                  "type": "string",
                                  "maxLength": 256
                                },
                                "iban": {
                                  "description": "International Bank Account Number (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 14,
                                  "maxLength": 42
                                },
                                "bic": {
                                  "description": "Bank Identifier Code (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                },
                                "sort_code": {
                                  "description": "UK sort code (FPS).",
                                  "type": "string",
                                  "minLength": 6,
                                  "maxLength": 8
                                },
                                "account_number": {
                                  "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 34
                                },
                                "routing_number": {
                                  "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "swift": {
                                  "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                },
                                "payee_name": {
                                  "description": "Payee / account-holder name on the provisioned inbound (named account).\nPopulated once the virtual account is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response carries it only when the account was already\nprovisioned at creation time. Rejected on a destination.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 140
                                },
                                "bank_address": {
                                  "description": "Bank / EMI address on the provisioned inbound. Populated once the virtual\naccount is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response\ncarries it only when the account was already provisioned at creation\ntime. Rejected on a destination.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "payee_address": {
                                  "description": "Payee's registered postal address on the provisioned inbound (on-ramp\nsource only) — distinct from `bank_address`, which is the bank / EMI\naddress. Populated once the virtual account is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response carries it only when the account was\nalready provisioned at creation time. Rejected on a destination.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                }
                              },
                              "required": ["via"],
                              "title": "BankAccount"
                            }
                          },
                          "required": ["type"],
                          "title": "ConversionEndpoint"
                        },
                        "to": {
                          "description": "Destination side. `address`/`bank_account` are partner-supplied.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 16
                            },
                            "type": {
                              "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                              "type": "string",
                              "enum": ["wallet", "bank"],
                              "title": "EndpointType"
                            },
                            "wallet": {
                              "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "address": {
                                  "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "memo": {
                                  "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                },
                                "tag": {
                                  "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                }
                              },
                              "required": ["via"],
                              "title": "Wallet"
                            },
                            "bank_account": {
                              "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "bank": {
                                  "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                                  "type": "string",
                                  "maxLength": 256
                                },
                                "iban": {
                                  "description": "International Bank Account Number (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 14,
                                  "maxLength": 42
                                },
                                "bic": {
                                  "description": "Bank Identifier Code (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                },
                                "sort_code": {
                                  "description": "UK sort code (FPS).",
                                  "type": "string",
                                  "minLength": 6,
                                  "maxLength": 8
                                },
                                "account_number": {
                                  "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 34
                                },
                                "routing_number": {
                                  "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "swift": {
                                  "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                }
                              },
                              "required": ["via"],
                              "title": "BankAccount"
                            }
                          },
                          "required": ["type"],
                          "title": "ConversionEndpoint"
                        },
                        "status": {
                          "description": "Lifecycle status (active | paused).",
                          "type": "string",
                          "enum": ["active", "paused", "provisioning"]
                        },
                        "created_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        },
                        "updated_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        }
                      },
                      "required": ["id", "from", "to", "status", "created_at", "updated_at"],
                      "title": "ConversionRule"
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "id-create-conversion-rule-ok": {
                    "summary": "CreateConversionRule returns the parrot-stubbed rule with provisioned inbound on `from`",
                    "value": {
                      "data": {
                        "id": "550e8400-e29b-41d4-a716-446655440000",
                        "name": "EUR autoramp to Polygon vault",
                        "from": {
                          "symbol": "EUR",
                          "type": "bank",
                          "bank_account": {
                            "via": "sepa",
                            "iban": "DE89370400440532013000",
                            "bic": "COBADEFFXXX",
                            "payee_name": "Delta Commerce B.V.",
                            "bank_address": "Borschestraat 12, Amsterdam",
                            "payee_address": "71 Sir John Rogerson's Quay, Dublin, D02 R296, Ireland"
                          }
                        },
                        "to": {
                          "symbol": "USDC",
                          "type": "wallet",
                          "wallet": {
                            "via": "polygon",
                            "address": "0x1234567890abcdef1234567890abcdef12345678"
                          }
                        },
                        "status": "active",
                        "created_at": "2026-05-25T10:30:00Z",
                        "updated_at": "2026-05-25T10:30:00Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/BadRequestError"
                    },
                    {
                      "$ref": "#/components/schemas/ConversionInvalidWithdrawalAddressErrorResponse"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversionsNotFoundErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversionLimitReachedErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "Create conversion rule"
      }
    },
    "/v1/accounts/{account_id}/conversions/{conversion_rule_id}": {
      "get": {
        "tags": ["Conversion rules"],
        "description": "Retrieves the current state of a previously created conversion rule.",
        "operationId": "getConversionRule",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "Internet International Bank Account Number identifying the PWS account\nthe conversion rule belongs to.",
              "type": "string",
              "minLength": 14,
              "maxLength": 42
            },
            "style": "simple",
            "example": "AA23N84GGQN4WE6I"
          },
          {
            "in": "path",
            "name": "conversion_rule_id",
            "required": true,
            "schema": {
              "description": "Conversion rule identifier.",
              "type": "string",
              "format": "uuid"
            },
            "style": "simple",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "The requested conversion rule.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Unique identifier for this conversion rule.",
                          "type": "string",
                          "format": "uuid"
                        },
                        "name": {
                          "description": "Optional partner-facing label for the conversion rule.",
                          "type": "string"
                        },
                        "from": {
                          "description": "Source side. On reads, `address`/`bank_account` are populated by the\nservice from the autoramp-provisioned inbound (where partner deposits\nfunds). On writes, those fields are ignored — partners only specify\nsymbol, type, and via on the source side.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 16
                            },
                            "type": {
                              "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                              "type": "string",
                              "enum": ["wallet", "bank"],
                              "title": "EndpointType"
                            },
                            "wallet": {
                              "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "address": {
                                  "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "memo": {
                                  "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                },
                                "tag": {
                                  "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                }
                              },
                              "required": ["via"],
                              "title": "Wallet"
                            },
                            "bank_account": {
                              "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "bank": {
                                  "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                                  "type": "string",
                                  "maxLength": 256
                                },
                                "iban": {
                                  "description": "International Bank Account Number (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 14,
                                  "maxLength": 42
                                },
                                "bic": {
                                  "description": "Bank Identifier Code (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                },
                                "sort_code": {
                                  "description": "UK sort code (FPS).",
                                  "type": "string",
                                  "minLength": 6,
                                  "maxLength": 8
                                },
                                "account_number": {
                                  "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 34
                                },
                                "routing_number": {
                                  "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "swift": {
                                  "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                },
                                "payee_name": {
                                  "description": "Payee / account-holder name on the provisioned inbound (named account).\nPopulated once the virtual account is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response carries it only when the account was already\nprovisioned at creation time. Rejected on a destination.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 140
                                },
                                "bank_address": {
                                  "description": "Bank / EMI address on the provisioned inbound. Populated once the virtual\naccount is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response\ncarries it only when the account was already provisioned at creation\ntime. Rejected on a destination.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "payee_address": {
                                  "description": "Payee's registered postal address on the provisioned inbound (on-ramp\nsource only) — distinct from `bank_address`, which is the bank / EMI\naddress. Populated once the virtual account is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response carries it only when the account was\nalready provisioned at creation time. Rejected on a destination.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                }
                              },
                              "required": ["via"],
                              "title": "BankAccount"
                            }
                          },
                          "required": ["type"],
                          "title": "ConversionEndpoint"
                        },
                        "to": {
                          "description": "Destination side. `address`/`bank_account` are partner-supplied.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 16
                            },
                            "type": {
                              "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                              "type": "string",
                              "enum": ["wallet", "bank"],
                              "title": "EndpointType"
                            },
                            "wallet": {
                              "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "address": {
                                  "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "memo": {
                                  "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                },
                                "tag": {
                                  "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                }
                              },
                              "required": ["via"],
                              "title": "Wallet"
                            },
                            "bank_account": {
                              "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "bank": {
                                  "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                                  "type": "string",
                                  "maxLength": 256
                                },
                                "iban": {
                                  "description": "International Bank Account Number (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 14,
                                  "maxLength": 42
                                },
                                "bic": {
                                  "description": "Bank Identifier Code (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                },
                                "sort_code": {
                                  "description": "UK sort code (FPS).",
                                  "type": "string",
                                  "minLength": 6,
                                  "maxLength": 8
                                },
                                "account_number": {
                                  "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 34
                                },
                                "routing_number": {
                                  "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "swift": {
                                  "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                }
                              },
                              "required": ["via"],
                              "title": "BankAccount"
                            }
                          },
                          "required": ["type"],
                          "title": "ConversionEndpoint"
                        },
                        "status": {
                          "description": "Lifecycle status (active | paused).",
                          "type": "string",
                          "enum": ["active", "paused", "provisioning"]
                        },
                        "created_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        },
                        "updated_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        }
                      },
                      "required": ["id", "from", "to", "status", "created_at", "updated_at"],
                      "title": "ConversionRule"
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "id-get-conversion-rule-ok": {
                    "summary": "GetConversionRule returns the parrot-stubbed rule with provisioned inbound on `from`",
                    "value": {
                      "data": {
                        "id": "550e8400-e29b-41d4-a716-446655440000",
                        "name": "EUR autoramp to Polygon vault",
                        "from": {
                          "symbol": "EUR",
                          "type": "bank",
                          "bank_account": {
                            "via": "sepa",
                            "iban": "DE89370400440532013000",
                            "bic": "COBADEFFXXX",
                            "payee_name": "Delta Commerce B.V.",
                            "bank_address": "Borschestraat 12, Amsterdam",
                            "payee_address": "71 Sir John Rogerson's Quay, Dublin, D02 R296, Ireland"
                          }
                        },
                        "to": {
                          "symbol": "USDC",
                          "type": "wallet",
                          "wallet": {
                            "via": "polygon",
                            "address": "0x1234567890abcdef1234567890abcdef12345678"
                          }
                        },
                        "status": "active",
                        "created_at": "2026-05-25T10:30:00Z",
                        "updated_at": "2026-05-25T10:30:00Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversionsNotFoundErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "Get conversion rule"
      },
      "put": {
        "tags": ["Conversion rules"],
        "description": "Updates an existing conversion rule. Replaces the destination, name, and\nstatus in a single full-state PUT (matching the autoramp rule update\ncontract). The source side is immutable — re-create the conversion rule\nif you need to change input asset, rail, or wallet.",
        "operationId": "updateConversionRule",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "Internet International Bank Account Number identifying the PWS account\nthe conversion rule belongs to.",
              "type": "string",
              "minLength": 14,
              "maxLength": 42
            },
            "style": "simple",
            "example": "AA23N84GGQN4WE6I"
          },
          {
            "in": "path",
            "name": "conversion_rule_id",
            "required": true,
            "schema": {
              "description": "Conversion rule identifier.",
              "type": "string",
              "format": "uuid"
            },
            "style": "simple",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to update an existing conversion rule.\n\nFull-state replacement (matching the upstream contract): the supplied\n`to`, `name`, and `status` replace the conversion rule's current values.\nThe source side (`from`) is immutable — re-create the conversion rule to\nchange input asset, rail, or source type.",
                "type": "object",
                "properties": {
                  "name": {
                    "description": "New partner-facing label for the conversion rule. This is a full replacement:\nomit to clear the existing label, send the current label to keep it.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128
                  },
                  "to": {
                    "description": "New destination side. Required (no partial updates supported).",
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 16
                      },
                      "type": {
                        "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                        "type": "string",
                        "enum": ["wallet", "bank"],
                        "title": "EndpointType"
                      },
                      "wallet": {
                        "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                        "type": "object",
                        "properties": {
                          "via": {
                            "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "address": {
                            "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "memo": {
                            "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "tag": {
                            "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                          }
                        },
                        "required": ["via"],
                        "title": "Wallet"
                      },
                      "bank_account": {
                        "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                        "type": "object",
                        "properties": {
                          "via": {
                            "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "bank": {
                            "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                            "type": "string",
                            "maxLength": 256
                          },
                          "iban": {
                            "description": "International Bank Account Number (SEPA, SWIFT).",
                            "type": "string",
                            "minLength": 14,
                            "maxLength": 42
                          },
                          "bic": {
                            "description": "Bank Identifier Code (SEPA, SWIFT).",
                            "type": "string",
                            "minLength": 8,
                            "maxLength": 11
                          },
                          "sort_code": {
                            "description": "UK sort code (FPS).",
                            "type": "string",
                            "minLength": 6,
                            "maxLength": 8
                          },
                          "account_number": {
                            "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 34
                          },
                          "routing_number": {
                            "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "swift": {
                            "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                            "type": "string",
                            "minLength": 8,
                            "maxLength": 11
                          }
                        },
                        "required": ["via"],
                        "title": "BankAccount"
                      }
                    },
                    "required": ["symbol", "type"],
                    "title": "ConversionEndpoint"
                  },
                  "status": {
                    "description": "New lifecycle status. Must be `active` or `paused`; soft-delete via\nthe delete endpoint when it lands.",
                    "type": "string",
                    "enum": ["active", "paused"]
                  }
                },
                "required": ["to", "status"]
              },
              "examples": {
                "id-update-conversion-rule-ok": {
                  "summary": "UpdateConversionRule returns the updated rule",
                  "value": {
                    "name": "Renamed EUR autoramp",
                    "to": {
                      "symbol": "USDC",
                      "type": "wallet",
                      "wallet": {
                        "via": "polygon",
                        "address": "0xabcdef1234567890abcdef1234567890abcdef12"
                      }
                    },
                    "status": "paused"
                  }
                },
                "id-update-conversion-rule-rejects-symbol-change": {
                  "summary": "UpdateConversionRule rejects an attempt to change to.symbol",
                  "value": {
                    "to": {
                      "symbol": "USDT",
                      "type": "wallet",
                      "wallet": {
                        "via": "polygon",
                        "address": "0xabcdef1234567890abcdef1234567890abcdef12"
                      }
                    },
                    "status": "active"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "The updated conversion rule.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Unique identifier for this conversion rule.",
                          "type": "string",
                          "format": "uuid"
                        },
                        "name": {
                          "description": "Optional partner-facing label for the conversion rule.",
                          "type": "string"
                        },
                        "from": {
                          "description": "Source side. On reads, `address`/`bank_account` are populated by the\nservice from the autoramp-provisioned inbound (where partner deposits\nfunds). On writes, those fields are ignored — partners only specify\nsymbol, type, and via on the source side.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 16
                            },
                            "type": {
                              "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                              "type": "string",
                              "enum": ["wallet", "bank"],
                              "title": "EndpointType"
                            },
                            "wallet": {
                              "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "address": {
                                  "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "memo": {
                                  "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                },
                                "tag": {
                                  "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                }
                              },
                              "required": ["via"],
                              "title": "Wallet"
                            },
                            "bank_account": {
                              "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "bank": {
                                  "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                                  "type": "string",
                                  "maxLength": 256
                                },
                                "iban": {
                                  "description": "International Bank Account Number (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 14,
                                  "maxLength": 42
                                },
                                "bic": {
                                  "description": "Bank Identifier Code (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                },
                                "sort_code": {
                                  "description": "UK sort code (FPS).",
                                  "type": "string",
                                  "minLength": 6,
                                  "maxLength": 8
                                },
                                "account_number": {
                                  "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 34
                                },
                                "routing_number": {
                                  "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "swift": {
                                  "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                },
                                "payee_name": {
                                  "description": "Payee / account-holder name on the provisioned inbound (named account).\nPopulated once the virtual account is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response carries it only when the account was already\nprovisioned at creation time. Rejected on a destination.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 140
                                },
                                "bank_address": {
                                  "description": "Bank / EMI address on the provisioned inbound. Populated once the virtual\naccount is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response\ncarries it only when the account was already provisioned at creation\ntime. Rejected on a destination.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "payee_address": {
                                  "description": "Payee's registered postal address on the provisioned inbound (on-ramp\nsource only) — distinct from `bank_address`, which is the bank / EMI\naddress. Populated once the virtual account is provisioned — on Get and List for SEPA (not currently returned for FPS); the create response carries it only when the account was\nalready provisioned at creation time. Rejected on a destination.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                }
                              },
                              "required": ["via"],
                              "title": "BankAccount"
                            }
                          },
                          "required": ["type"],
                          "title": "ConversionEndpoint"
                        },
                        "to": {
                          "description": "Destination side. `address`/`bank_account` are partner-supplied.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"EUR\", \"USDC\", \"BTC\").",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 16
                            },
                            "type": {
                              "description": "Kind of endpoint. `wallet` requires `wallet`; `bank` requires\n`bank_account`; `balance` requires neither.",
                              "type": "string",
                              "enum": ["wallet", "bank"],
                              "title": "EndpointType"
                            },
                            "wallet": {
                              "description": "Crypto wallet routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a crypto inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Network identifier (\"polygon\", \"ethereum\", \"bitcoin\", ...).",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "address": {
                                  "description": "On-chain address. Required when `Wallet` is set on a destination\nendpoint; populated by the service when set on a source endpoint\nresponse.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                },
                                "memo": {
                                  "description": "Memo for chains that require one (e.g. XLM, EOS, Cosmos). Passed through to\nthe destination on off-ramp; populated on source responses when upstream\nprovisions a memo'd inbound.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                },
                                "tag": {
                                  "description": "Destination tag for chains that require one (e.g. XRP). Passed through to\nthe destination on off-ramp; populated on source responses.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 64
                                }
                              },
                              "required": ["via"],
                              "title": "Wallet"
                            },
                            "bank_account": {
                              "description": "Bank account routing. On `to`: partner-supplied destination. On\n`from`: service-populated when autoramp provisions a fiat inbound.\nIgnored on the `from` side of requests.",
                              "type": "object",
                              "properties": {
                                "via": {
                                  "description": "Bank rail identifier. Conversion destinations currently support `sepa` and `fps`; unsupported rails are rejected.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "bank": {
                                  "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
                                  "type": "string",
                                  "maxLength": 256
                                },
                                "iban": {
                                  "description": "International Bank Account Number (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 14,
                                  "maxLength": 42
                                },
                                "bic": {
                                  "description": "Bank Identifier Code (SEPA, SWIFT).",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                },
                                "sort_code": {
                                  "description": "UK sort code (FPS).",
                                  "type": "string",
                                  "minLength": 6,
                                  "maxLength": 8
                                },
                                "account_number": {
                                  "description": "Account number. Required for FPS destinations; may also be populated on source bank accounts.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 34
                                },
                                "routing_number": {
                                  "description": "Routing number populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 32
                                },
                                "swift": {
                                  "description": "SWIFT code populated on source bank accounts when supplied by the provider; not accepted on conversion destinations.",
                                  "type": "string",
                                  "minLength": 8,
                                  "maxLength": 11
                                }
                              },
                              "required": ["via"],
                              "title": "BankAccount"
                            }
                          },
                          "required": ["type"],
                          "title": "ConversionEndpoint"
                        },
                        "status": {
                          "description": "Lifecycle status (active | paused).",
                          "type": "string",
                          "enum": ["active", "paused", "provisioning"]
                        },
                        "created_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        },
                        "updated_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        }
                      },
                      "required": ["id", "from", "to", "status", "created_at", "updated_at"],
                      "title": "ConversionRule"
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "id-update-conversion-rule-ok": {
                    "summary": "UpdateConversionRule returns the updated rule",
                    "value": {
                      "data": {
                        "id": "550e8400-e29b-41d4-a716-446655440000",
                        "name": "Renamed EUR autoramp",
                        "from": {
                          "symbol": "EUR",
                          "type": "bank",
                          "bank_account": {
                            "via": "sepa",
                            "payee_name": "Delta Commerce B.V.",
                            "bank_address": "Borschestraat 12, Amsterdam",
                            "payee_address": "71 Sir John Rogerson's Quay, Dublin, D02 R296, Ireland"
                          }
                        },
                        "to": {
                          "symbol": "USDC",
                          "type": "wallet",
                          "wallet": {
                            "via": "polygon",
                            "address": "0xabcdef1234567890abcdef1234567890abcdef12"
                          }
                        },
                        "status": "paused",
                        "created_at": "2026-05-25T10:30:00Z",
                        "updated_at": "2026-05-25T11:00:00Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/BadRequestError"
                    },
                    {
                      "$ref": "#/components/schemas/ConversionInvalidWithdrawalAddressErrorResponse"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversionsNotFoundErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RuleAlreadyDeletedErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "Update conversion rule"
      },
      "delete": {
        "tags": ["Conversion rules"],
        "description": "Deletes a conversion rule (soft-delete). Inbound funds already received\ncontinue to settle; future deposits are rejected. Re-deleting an\nalready-deleted conversion rule returns `404 NotFound` — partners cannot\ndistinguish \"deleted\" from \"never existed\".",
        "operationId": "deleteConversionRule",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "Internet International Bank Account Number identifying the PWS account\nthe conversion rule belongs to.",
              "type": "string",
              "minLength": 14,
              "maxLength": 42
            },
            "style": "simple",
            "example": "AA23N84GGQN4WE6I"
          },
          {
            "in": "path",
            "name": "conversion_rule_id",
            "required": true,
            "schema": {
              "description": "Conversion rule identifier.",
              "type": "string",
              "format": "uuid"
            },
            "style": "simple",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversionsNotFoundErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "Delete conversion rule"
      }
    },
    "/v1/accounts/{account_id}/conversions/{conversion_rule_id}/transactions": {
      "get": {
        "tags": ["Conversion rules"],
        "description": "Lists transactions produced by a single conversion rule, ordered by\n`created_at` descending.\n\nEach conversion rule accumulates zero-or-more transactions over its\nlifetime as deposits arrive and trades execute. Use `ListConversionRules`\nto enumerate the rules themselves.",
        "operationId": "listConversionRuleTransactions",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "Internet International Bank Account Number identifying the PWS account\nthe conversion rule belongs to.",
              "type": "string",
              "minLength": 14,
              "maxLength": 42
            },
            "style": "simple",
            "example": "AA23N84GGQN4WE6I"
          },
          {
            "in": "path",
            "name": "conversion_rule_id",
            "required": true,
            "schema": {
              "description": "Identifier of the conversion rule whose transactions to list.",
              "type": "string",
              "format": "uuid"
            },
            "style": "simple",
            "example": "12345678-1234-1234-1234-123456789012"
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return on a single page. Defaults to 20,\nmaximum 25.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form",
            "example": 20
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque cursor returned by a previous response's `next_page_token`. Omit\nto start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Per-transaction summaries on this page, ordered by `created_at`\ndescending.",
                      "type": "array",
                      "items": {
                        "description": "Per-transaction summary returned by `ListConversionRuleTransactions`.",
                        "type": "object",
                        "properties": {
                          "id": {
                            "description": "Unique identifier for this transaction.",
                            "type": "string"
                          },
                          "status": {
                            "description": "Lifecycle state of the transaction.",
                            "type": "string",
                            "enum": ["pending_deposit", "converting", "settling", "completed", "failed", "held"]
                          },
                          "conversion_rule_id": {
                            "description": "Identifier of the conversion rule that produced this transaction.",
                            "type": "string"
                          },
                          "from": {
                            "description": "Source side: asset symbol/amount and funding rail. Absent on\nin-progress transactions before the inbound deposit has been observed.",
                            "type": "object",
                            "properties": {
                              "symbol": {
                                "description": "Asset ticker symbol of the source side (e.g. \"EUR\").",
                                "type": "string"
                              },
                              "amount": {
                                "description": "Decimal amount once the deposit has been observed.",
                                "type": "string"
                              },
                              "type": {
                                "description": "Endpoint type (wallet, bank, balance).",
                                "type": "string",
                                "enum": ["wallet", "bank"]
                              },
                              "via": {
                                "description": "Rail or network identifier (e.g. \"ethereum\", \"sepa\").",
                                "type": "string"
                              },
                              "status": {
                                "description": "Status of the inbound deposit.",
                                "type": "string",
                                "enum": ["pending", "held", "settled", "failed"],
                                "title": "ConversionSettlementStatus"
                              }
                            },
                            "required": ["amount", "type", "status"],
                            "title": "ConversionSummaryFrom"
                          },
                          "to": {
                            "description": "Destination side: asset symbol/amount and settlement rail. Absent on in-progress\ntransactions before the outbound trade has produced withdrawal data.",
                            "type": "object",
                            "properties": {
                              "symbol": {
                                "description": "Asset ticker symbol of the destination side (e.g. \"BTC\").",
                                "type": "string"
                              },
                              "amount": {
                                "description": "Decimal amount once the trade has filled.",
                                "type": "string"
                              },
                              "status": {
                                "description": "Status of the outbound withdrawal.",
                                "type": "string",
                                "enum": ["pending", "held", "settled", "failed"]
                              },
                              "via": {
                                "description": "Rail or network identifier (e.g. \"bitcoin\", \"sepa\").",
                                "type": "string"
                              }
                            },
                            "required": ["amount", "status"],
                            "title": "ConversionSummaryTo"
                          },
                          "chain_references": {
                            "description": "On-chain transaction references for inbound and outbound legs.",
                            "type": "object",
                            "properties": {
                              "deposit_txid": {
                                "description": "Inbound (deposit) transaction ID.",
                                "type": "string"
                              },
                              "withdraw_txid": {
                                "description": "Outbound (withdrawal) transaction ID.",
                                "type": "string"
                              }
                            },
                            "title": "ChainReferences"
                          },
                          "created_at": {
                            "$ref": "#/components/schemas/google.protobuf.Timestamp"
                          }
                        },
                        "required": ["status", "conversion_rule_id", "chain_references", "created_at"],
                        "title": "ConversionSummary"
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque cursor for the next page of results. Absent when there are no\nmore pages.",
                      "type": "string"
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "id-list-conversion-rule-transactions-ok": {
                    "summary": "ListConversionRuleTransactions returns the parrot-stubbed transaction summaries",
                    "value": {
                      "data": [
                        {
                          "id": "conv_smoke_001",
                          "status": "completed",
                          "conversion_rule_id": "12345678-1234-1234-1234-123456789012",
                          "from": {
                            "symbol": "EUR",
                            "amount": "100.00",
                            "type": "bank",
                            "via": "sepa",
                            "status": "settled"
                          },
                          "to": {
                            "symbol": "BTC",
                            "amount": "0.002",
                            "status": "settled",
                            "via": "bitcoin"
                          },
                          "chain_references": {
                            "deposit_txid": "deposit-eur-001",
                            "withdraw_txid": "withdraw-btc-001"
                          },
                          "created_at": "2026-04-01T12:00:00Z"
                        },
                        {
                          "id": "conv_smoke_002",
                          "status": "pending_deposit",
                          "conversion_rule_id": "12345678-1234-1234-1234-123456789012",
                          "chain_references": {},
                          "created_at": "2026-04-02T09:30:00Z"
                        },
                        {
                          "id": "conv_smoke_003",
                          "status": "held",
                          "conversion_rule_id": "12345678-1234-1234-1234-123456789012",
                          "from": {
                            "symbol": "EUR",
                            "amount": "250.00",
                            "type": "bank",
                            "via": "sepa",
                            "status": "held"
                          },
                          "chain_references": {
                            "deposit_txid": "deposit-held-001"
                          },
                          "created_at": "2026-04-03T14:15:00Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversionsNotFoundErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "List conversion rule transactions"
      }
    },
    "/v1/accounts/{account_id}/earn/auto": {
      "get": {
        "tags": ["Earn"],
        "description": "Returns the current auto-earn preferences for the specified account.\n\nA yield source key is only present in the response if the account is eligible\nfor that yield source. Absent keys indicate ineligibility.",
        "operationId": "getAutoEarnPreferences",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "ID of the account to retrieve preferences for. Refers to one of the accounts held by the user the request is acting on behalf of.",
              "type": "string",
              "pattern": "^[A-Z0-9]{16}$"
            },
            "x-selected-account": true,
            "style": "simple",
            "example": "WFFGB6Z8AK5WF9JL"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Auto-earn preferences for the account.",
                      "type": "object",
                      "properties": {
                        "staking": {
                          "description": "Current staking auto-earn status. Absent if the account is not eligible for staking.",
                          "type": "string",
                          "enum": ["enabled", "disabled", "pending_enabled", "pending_disabled"]
                        },
                        "base_rewards": {
                          "description": "Current base-rewards auto-earn status. Absent if the account is not eligible for base rewards.",
                          "type": "string",
                          "enum": ["enabled", "disabled", "pending_enabled", "pending_disabled"]
                        }
                      }
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "staking-enabled": {
                    "summary": "Staking is active for this account",
                    "value": {
                      "data": {
                        "staking": "enabled"
                      }
                    }
                  },
                  "staking-pending": {
                    "summary": "Staking activation is in progress",
                    "value": {
                      "data": {
                        "staking": "pending_enabled"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Get auto earn preferences"
      },
      "patch": {
        "tags": ["Earn"],
        "description": "Sets auto-earn preferences for the specified account.\n\nAll body fields are optional. Only fields that are present will be updated;\nomitted yield sources are left unchanged.",
        "operationId": "setAutoEarnPreferences",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "ID of the account to update preferences for. Refers to one of the accounts held by the user the request is acting on behalf of.",
              "type": "string",
              "pattern": "^[A-Z0-9]{16}$"
            },
            "x-selected-account": true,
            "style": "simple",
            "example": "WFFGB6Z8AK5WF9JL"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to set auto-earn preferences for an account.",
                "type": "object",
                "properties": {
                  "staking": {
                    "description": "Staking auto-earn preference. Omit to leave unchanged.",
                    "type": "string",
                    "enum": ["enabled", "disabled"]
                  },
                  "base_rewards": {
                    "description": "Base-rewards auto-earn preference. Omit to leave unchanged.",
                    "type": "string",
                    "enum": ["enabled", "disabled"]
                  }
                }
              },
              "examples": {
                "enable-staking": {
                  "summary": "Enable staking auto-earn",
                  "value": {
                    "staking": "enabled"
                  }
                },
                "disable-staking": {
                  "summary": "Disable staking auto-earn",
                  "value": {
                    "staking": "disabled"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Empty data object.",
                      "type": "object"
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "accepted": {
                    "summary": "Preference update accepted (empty response body)",
                    "value": {
                      "data": {}
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/BadRequestError"
                    },
                    {
                      "$ref": "#/components/schemas/NotEligibleErrorResponse"
                    }
                  ]
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AllocationInProgressErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Set auto earn preferences"
      }
    },
    "/v1/accounts/{account_id}/earn/auto/allocations": {
      "get": {
        "tags": ["Earn"],
        "description": "Returns current allocation info for the specified account.\n\nResults are paginated. Converted amounts are denominated in the currency\nidentified by `quote_symbol` / `quote_type` (defaults to USD/fiat).",
        "operationId": "getAutoEarnAllocations",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "ID of the account to retrieve allocations for. Refers to one of the accounts held by the user the request is acting on behalf of.",
              "type": "string",
              "pattern": "^[A-Z0-9]{16}$"
            },
            "x-selected-account": true,
            "style": "simple",
            "example": "WFFGB6Z8AK5WF9JL"
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "schema": {
              "description": "Ticker symbol of the quote asset for converted amounts (e.g. \"USD\", \"EUR\"). Defaults to \"USD\".",
              "type": "string",
              "maxLength": 10
            },
            "style": "form",
            "example": "USD"
          },
          {
            "in": "query",
            "name": "quote_type",
            "schema": {
              "description": "Type of the quote asset. Only \"fiat\" is supported. Defaults to \"fiat\".",
              "type": "string",
              "maxLength": 16
            },
            "style": "form",
            "example": "fiat"
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form",
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total_allocated_in_quote": {
                      "description": "Total of all allocations expressed in the quote currency.",
                      "type": "string"
                    },
                    "data": {
                      "description": "Per-asset allocation entries for the requested page.",
                      "type": "array",
                      "items": {
                        "description": "Current allocation for one asset.",
                        "type": "object",
                        "properties": {
                          "symbol": {
                            "description": "Asset ticker symbol (e.g. \"ETH\").",
                            "type": "string"
                          },
                          "type": {
                            "description": "Classification of the asset.",
                            "type": "string",
                            "enum": ["fiat", "crypto", "xstock", "stablecoin", "equity"]
                          },
                          "name": {
                            "description": "Display name (e.g. \"Ethereum\").",
                            "type": "string"
                          },
                          "allocated": {
                            "description": "Decimal amount currently allocated in the native asset.",
                            "type": "string"
                          },
                          "allocated_in_quote": {
                            "description": "Decimal amount currently allocated converted to the quote currency.",
                            "type": "string"
                          }
                        }
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent if there are no more results.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    },
                    "quote_symbol": {
                      "description": "Symbol of the quote asset used for converted amounts (e.g. \"USD\", \"EUR\").",
                      "type": "string"
                    },
                    "quote_type": {
                      "description": "Type of the quote asset (e.g. \"fiat\").",
                      "type": "string"
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "allocations-with-next-page": {
                    "summary": "First page of allocations in USD",
                    "value": {
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "total_allocated_in_quote": "12345.12",
                      "data": [
                        {
                          "symbol": "ETH",
                          "type": "crypto",
                          "name": "Ethereum",
                          "allocated": "3.5000",
                          "allocated_in_quote": "8750.00"
                        },
                        {
                          "symbol": "DOT",
                          "type": "crypto",
                          "name": "Polkadot",
                          "allocated": "450.00",
                          "allocated_in_quote": "3595.12"
                        }
                      ],
                      "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                    }
                  },
                  "allocations-last-page": {
                    "summary": "Last page — `next_page_token` is omitted",
                    "value": {
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "total_allocated_in_quote": "12345.12",
                      "data": [
                        {
                          "symbol": "ADA",
                          "type": "crypto",
                          "name": "Cardano",
                          "allocated": "1200.00",
                          "allocated_in_quote": "552.00"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Get auto earn allocations"
      }
    },
    "/v1/accounts/{account_id}/earn/auto/assets": {
      "get": {
        "tags": ["Earn"],
        "description": "Returns auto-earn asset info for assets available to the specified account.\n\nResults are paginated.",
        "operationId": "getAccountAutoEarnAssets",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "ID of the account to retrieve available assets for. Refers to one of the accounts held by the user the request is acting on behalf of.",
              "type": "string",
              "pattern": "^[A-Z0-9]{16}$"
            },
            "x-selected-account": true,
            "style": "simple",
            "example": "WFFGB6Z8AK5WF9JL"
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form",
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Auto-earn asset entries available to the account for the requested page.",
                      "type": "array",
                      "items": {
                        "description": "Auto-earn asset info entry.",
                        "type": "object",
                        "properties": {
                          "symbol": {
                            "description": "Asset ticker symbol (e.g. \"ETH\").",
                            "type": "string"
                          },
                          "type": {
                            "description": "Classification of the asset.",
                            "type": "string",
                            "enum": ["fiat", "crypto", "xstock", "stablecoin", "equity"]
                          },
                          "name": {
                            "description": "Display name (e.g. \"Ethereum\").",
                            "type": "string"
                          },
                          "yield_source": {
                            "description": "Yield source that backs this asset (e.g. \"staking\").",
                            "type": "string",
                            "enum": ["staking", "base_rewards"]
                          },
                          "apy": {
                            "description": "Annual percentage yield as a decimal string (e.g. \"3.41\").",
                            "type": "string"
                          },
                          "user_cap": {
                            "description": "Maximum amount the user can have allocated, in the asset's native units. Absent when there is no cap.",
                            "type": "string"
                          }
                        }
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent if there are no more results.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "account-assets": {
                    "summary": "Assets available for auto-earn for this account",
                    "value": {
                      "data": [
                        {
                          "symbol": "ETH",
                          "type": "crypto",
                          "name": "Ethereum",
                          "yield_source": "staking",
                          "apy": "3.41",
                          "user_cap": "1000"
                        },
                        {
                          "symbol": "DOT",
                          "type": "crypto",
                          "name": "Polkadot",
                          "yield_source": "staking",
                          "apy": "12.50"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Get account auto earn assets"
      }
    },
    "/v1/accounts/{account_id}/earn/auto/rewards": {
      "get": {
        "tags": ["Earn"],
        "description": "Returns historical reward info for the specified account.\n\nResults are paginated. Converted amounts are denominated in the currency\nidentified by `quote_symbol` / `quote_type` (defaults to USD/fiat).\n`estimated_next_reward` and `next_reward_date` are absent if no reward is pending.",
        "operationId": "getAutoEarnRewards",
        "parameters": [
          {
            "in": "path",
            "name": "account_id",
            "required": true,
            "schema": {
              "description": "ID of the account to retrieve rewards for. Refers to one of the accounts held by the user the request is acting on behalf of.",
              "type": "string",
              "pattern": "^[A-Z0-9]{16}$"
            },
            "x-selected-account": true,
            "style": "simple",
            "example": "WFFGB6Z8AK5WF9JL"
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "schema": {
              "description": "Ticker symbol of the quote asset for converted amounts (e.g. \"USD\", \"EUR\"). Defaults to \"USD\".",
              "type": "string",
              "maxLength": 10
            },
            "style": "form",
            "example": "USD"
          },
          {
            "in": "query",
            "name": "quote_type",
            "schema": {
              "description": "Type of the quote asset. Only \"fiat\" is supported. Defaults to \"fiat\".",
              "type": "string",
              "maxLength": 16
            },
            "style": "form",
            "example": "fiat"
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form",
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total_rewarded_in_quote": {
                      "description": "Sum of all per-asset rewarded_in_quote values expressed in the quote currency.",
                      "type": "string"
                    },
                    "next_reward_date": {
                      "$ref": "#/components/schemas/google.protobuf.Timestamp"
                    },
                    "data": {
                      "description": "Per-asset reward entries for the requested page.",
                      "type": "array",
                      "items": {
                        "description": "Reward history for one asset.",
                        "type": "object",
                        "properties": {
                          "symbol": {
                            "description": "Asset ticker symbol (e.g. \"ETH\").",
                            "type": "string"
                          },
                          "type": {
                            "description": "Classification of the asset.",
                            "type": "string",
                            "enum": ["fiat", "crypto", "xstock", "stablecoin", "equity"]
                          },
                          "name": {
                            "description": "Display name (e.g. \"Ethereum\").",
                            "type": "string"
                          },
                          "rewarded": {
                            "description": "Total amount rewarded to date in the entry's base asset only (e.g. ETH for an ETH strategy).\nDoes not include cross-asset rewards — see other_assets. Always present.",
                            "type": "string"
                          },
                          "rewarded_in_quote": {
                            "description": "Total base-asset rewards converted to the quote currency. Does not include cross-asset rewards.\nTo compute the total quoted value across all reward assets, sum this with each\nother_assets[n].rewarded_in_quote. Always present.",
                            "type": "string"
                          },
                          "estimated_next_reward": {
                            "description": "Estimated next reward in the entry's base asset only. Absent if no reward is pending.",
                            "type": "string"
                          },
                          "estimated_next_reward_in_quote": {
                            "description": "Estimated next base-asset reward converted to the quote currency. Absent if no reward is pending.",
                            "type": "string"
                          },
                          "other_assets": {
                            "description": "Rewards in assets other than the entry's base asset (e.g. EIGEN earned from an ETH strategy).\nEmpty when all rewards are in the base asset.",
                            "type": "array",
                            "items": {
                              "description": "Reward for an asset other than the entry's base asset.",
                              "type": "object",
                              "properties": {
                                "symbol": {
                                  "description": "Asset ticker symbol (e.g. \"EIGEN\").",
                                  "type": "string"
                                },
                                "type": {
                                  "description": "Classification of the asset.",
                                  "type": "string",
                                  "enum": ["fiat", "crypto", "xstock", "stablecoin", "equity"]
                                },
                                "name": {
                                  "description": "Display name (e.g. \"Eigenlayer\").",
                                  "type": "string"
                                },
                                "rewarded": {
                                  "description": "Total amount rewarded to date in this asset.",
                                  "type": "string"
                                },
                                "rewarded_in_quote": {
                                  "description": "Total amount rewarded to date converted to the quote currency.",
                                  "type": "string"
                                },
                                "estimated_next_reward": {
                                  "description": "Estimated next reward in this asset. Absent if no pending reward.",
                                  "type": "string"
                                },
                                "estimated_next_reward_in_quote": {
                                  "description": "Estimated next reward converted to the quote currency. Absent if no pending reward.",
                                  "type": "string"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent if there are no more results.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    },
                    "quote_symbol": {
                      "description": "Symbol of the quote asset used for converted amounts (e.g. \"USD\", \"EUR\").",
                      "type": "string"
                    },
                    "quote_type": {
                      "description": "Type of the quote asset (e.g. \"fiat\").",
                      "type": "string"
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "rewards-with-pending": {
                    "summary": "Rewards with a pending payout for a restaked asset",
                    "value": {
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "total_rewarded_in_quote": "325.62",
                      "next_reward_date": "2026-06-01T00:00:00Z",
                      "data": [
                        {
                          "symbol": "ETH",
                          "type": "crypto",
                          "name": "Ethereum",
                          "rewarded": "0.0125",
                          "rewarded_in_quote": "31.25",
                          "estimated_next_reward": "0.0056",
                          "estimated_next_reward_in_quote": "14.00",
                          "other_assets": [
                            {
                              "symbol": "EIGEN",
                              "type": "crypto",
                              "name": "Eigenlayer",
                              "rewarded": "5.0",
                              "rewarded_in_quote": "12.50",
                              "estimated_next_reward": "0.1",
                              "estimated_next_reward_in_quote": "0.25"
                            }
                          ]
                        }
                      ]
                    }
                  },
                  "rewards-no-pending": {
                    "summary": "Rewards only, no pending payout",
                    "value": {
                      "quote_symbol": "USD",
                      "quote_type": "fiat",
                      "total_rewarded_in_quote": "31.25",
                      "data": [
                        {
                          "symbol": "ETH",
                          "type": "crypto",
                          "name": "Ethereum",
                          "rewarded": "0.0125",
                          "rewarded_in_quote": "31.25"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AccountNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Get auto earn rewards"
      }
    },
    "/v1/earn/auto/assets": {
      "get": {
        "tags": ["Earn"],
        "description": "Returns auto-earn asset info for a given country.\n\nUser-agnostic endpoint. Results are paginated. `country` is required\nand must be a valid ISO 3166-1 alpha-2 country code.",
        "operationId": "getAutoEarnAssets",
        "parameters": [
          {
            "in": "query",
            "name": "country",
            "schema": {
              "description": "ISO 3166-1 alpha-2 country code to filter eligible assets (e.g. \"US\", \"GB\"). Required.",
              "type": "string",
              "pattern": "^[A-Z]{2}$"
            },
            "style": "form",
            "example": "DE",
            "required": true
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form",
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Auto-earn asset entries for the requested country and page.",
                      "type": "array",
                      "items": {
                        "description": "Auto-earn asset info entry.",
                        "type": "object",
                        "properties": {
                          "symbol": {
                            "description": "Asset ticker symbol (e.g. \"ETH\").",
                            "type": "string"
                          },
                          "type": {
                            "description": "Classification of the asset.",
                            "type": "string",
                            "enum": ["fiat", "crypto", "xstock", "stablecoin", "equity"]
                          },
                          "name": {
                            "description": "Display name (e.g. \"Ethereum\").",
                            "type": "string"
                          },
                          "yield_source": {
                            "description": "Yield source that backs this asset (e.g. \"staking\").",
                            "type": "string",
                            "enum": ["staking", "base_rewards"]
                          },
                          "apy": {
                            "description": "Annual percentage yield as a decimal string (e.g. \"3.41\").",
                            "type": "string"
                          },
                          "user_cap": {
                            "description": "Maximum amount the user can have allocated, in the asset's native units. Absent when there is no cap.",
                            "type": "string"
                          }
                        }
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent if there are no more results.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "country-assets": {
                    "summary": "Assets eligible for auto-earn in Germany",
                    "value": {
                      "data": [
                        {
                          "symbol": "ETH",
                          "type": "crypto",
                          "name": "Ethereum",
                          "yield_source": "staking",
                          "apy": "3.41",
                          "user_cap": "1000"
                        },
                        {
                          "symbol": "DOT",
                          "type": "crypto",
                          "name": "Polkadot",
                          "yield_source": "staking",
                          "apy": "12.50"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Get auto earn assets"
      }
    },
    "/v1/funds/withdrawals/addresses/validate": {
      "post": {
        "operationId": "validateWithdrawalAddress",
        "summary": "Validate Withdrawal Address",
        "tags": ["Funds"],
        "description": "Validate a crypto withdrawal address for the provided asset and method.\n\nThis endpoint validates the address format and network compatibility but does\nnot persist the address.",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string",
              "format": "uuid",
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "style": "simple",
            "description": "Client-generated UUIDv4 for safe retries. Sent as the `Idempotency-Key` HTTP header. Replayed responses include the `Idempotent-Replayed: true` header."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "asset_symbol": {
                    "description": "Ticker symbol of the asset to validate the address against (e.g. `BTC`, `ETH`).",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/AssetSymbol"
                      }
                    ]
                  },
                  "asset_type": {
                    "description": "Classification of the asset. Pair with `asset_symbol` to disambiguate when the same ticker exists across asset classes. Defaults to `crypto`.",
                    "type": "string",
                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                    "default": "crypto"
                  },
                  "method_id": {
                    "description": "Withdrawal method identifier from `GET /b2b/funds/withdrawals/methods/{asset}`",
                    "type": "string",
                    "format": "uuid"
                  },
                  "address": {
                    "description": "The crypto address to validate",
                    "type": "string"
                  },
                  "memo": {
                    "description": "Memo or tag for networks that require one (e.g., XRP, XLM)",
                    "type": ["string", "null"]
                  }
                },
                "required": ["asset_symbol", "method_id", "address"]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "valid": {
                          "description": "Whether the address is valid",
                          "type": "boolean"
                        }
                      },
                      "required": ["valid"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "valid": true
                    }
                  }
                },
                "example": {
                  "data": {
                    "valid": true
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/funds/withdrawals/addresses/validate\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"asset_symbol\": \"BTC\",\n    \"asset_type\": \"crypto\",\n    \"method_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0b8c1\"\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/funds/withdrawals/addresses": {
      "get": {
        "operationId": "listWithdrawalAddresses",
        "summary": "List Withdrawal Addresses",
        "tags": ["Funds"],
        "description": "List saved withdrawal addresses for the effective account.\n\nYou can optionally filter by `asset`, `method_id`, and `key`.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "query",
            "name": "asset_symbol",
            "required": false,
            "description": "Ticker symbol of the asset to filter saved withdrawal addresses by (e.g. `BTC`, `ETH`). Optional; if omitted, addresses for all assets are returned.",
            "schema": {
              "anyOf": [
                {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/AssetSymbol"
                    }
                  ]
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "asset_type",
            "required": false,
            "description": "Classification of the asset to filter saved withdrawal addresses by. Pair with `asset_symbol` to disambiguate when the same ticker exists across asset classes. Defaults to `crypto`.",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"],
              "default": "crypto"
            }
          },
          {
            "in": "query",
            "name": "method_id",
            "required": false,
            "schema": {
              "description": "Filter by withdrawal method identifier",
              "type": ["string", "null"],
              "format": "uuid"
            }
          },
          {
            "in": "query",
            "name": "key",
            "required": false,
            "schema": {
              "description": "Filter by saved withdrawal address key",
              "type": ["string", "null"]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "key": {
                            "description": "User-provided name for this address",
                            "type": "string"
                          },
                          "asset": {
                            "description": "The asset this address is for.",
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/AssetRef"
                              }
                            ]
                          },
                          "method": {
                            "description": "The withdrawal method this address belongs to.",
                            "type": "object",
                            "properties": {
                              "id": {
                                "description": "Stable UUID identifier of the withdrawal method.",
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "description": "Display name of the withdrawal method.",
                                "type": "string"
                              }
                            },
                            "required": ["id", "name"]
                          },
                          "address": {
                            "description": "The crypto withdrawal address",
                            "type": "string"
                          },
                          "memo": {
                            "description": "Memo for networks that require it",
                            "type": ["string", "null"]
                          },
                          "tag": {
                            "description": "Tag for networks that require it",
                            "type": ["string", "null"]
                          },
                          "created_at": {
                            "description": "When the address was saved (ISO 8601)",
                            "anyOf": [
                              {
                                "$ref": "#/components/schemas/DateTime"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": ["key", "asset", "method", "address"]
                      },
                      "description": "Result page."
                    },
                    "next_page_token": {
                      "description": "Opaque cursor for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": [
                      {
                        "key": "My cold storage",
                        "asset": {
                          "symbol": "BTC",
                          "type": "crypto"
                        },
                        "method": {
                          "id": "b3a7d8b4-9f36-4c2e-9c1e-7b9e6f9a0a11",
                          "name": "Bitcoin"
                        },
                        "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                        "memo": null,
                        "tag": null,
                        "created_at": "2025-11-04T18:24:11Z"
                      },
                      {
                        "key": "Treasury XRP",
                        "asset": {
                          "symbol": "XRP",
                          "type": "crypto"
                        },
                        "method": {
                          "id": "5e1c4a08-7a4a-4d74-9a81-2c9b7c28a1d2",
                          "name": "XRP"
                        },
                        "address": "rEb8TK3gBgk5auZkwc6sHnwrGVJH8DuaLh",
                        "memo": null,
                        "tag": "4521980",
                        "created_at": "2026-01-22T09:12:43Z"
                      }
                    ],
                    "next_page_token": null
                  }
                },
                "example": {
                  "data": [
                    {
                      "key": "My cold storage",
                      "asset": {
                        "symbol": "BTC",
                        "type": "crypto"
                      },
                      "method": {
                        "id": "b3a7d8b4-9f36-4c2e-9c1e-7b9e6f9a0a11",
                        "name": "Bitcoin"
                      },
                      "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                      "memo": null,
                      "tag": null,
                      "created_at": "2025-11-04T18:24:11Z"
                    },
                    {
                      "key": "Treasury XRP",
                      "asset": {
                        "symbol": "XRP",
                        "type": "crypto"
                      },
                      "method": {
                        "id": "5e1c4a08-7a4a-4d74-9a81-2c9b7c28a1d2",
                        "name": "XRP"
                      },
                      "address": "rEb8TK3gBgk5auZkwc6sHnwrGVJH8DuaLh",
                      "memo": null,
                      "tag": "4521980",
                      "created_at": "2026-01-22T09:12:43Z"
                    }
                  ],
                  "next_page_token": null
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/funds/withdrawals/addresses\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      },
      "post": {
        "operationId": "saveWithdrawalAddress",
        "summary": "Save Withdrawal Address",
        "tags": ["Funds"],
        "description": "Validate and save a withdrawal address for future withdrawals.\n\nReturns the address key that should be used when calling\n`POST /v1/funds/withdrawals`.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string",
              "format": "uuid",
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "style": "simple",
            "description": "Client-generated UUIDv4 for safe retries. Sent as the `Idempotency-Key` HTTP header. Replayed responses include the `Idempotent-Replayed: true` header."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "asset_symbol": {
                    "description": "Ticker symbol of the asset for the withdrawal address being saved (e.g. `BTC`, `ETH`).",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/AssetSymbol"
                      }
                    ]
                  },
                  "asset_type": {
                    "description": "Classification of the asset. Pair with `asset_symbol` to disambiguate when the same ticker exists across asset classes. Defaults to `crypto`.",
                    "type": "string",
                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                    "default": "crypto"
                  },
                  "method_id": {
                    "description": "Withdrawal method identifier from `GET /b2b/funds/withdrawals/methods/{asset}`",
                    "type": "string",
                    "format": "uuid"
                  },
                  "key": {
                    "description": "User-provided name for this address",
                    "type": "string"
                  },
                  "address": {
                    "description": "The crypto withdrawal address",
                    "type": "string"
                  },
                  "memo": {
                    "description": "Memo for networks that require it",
                    "type": ["string", "null"]
                  },
                  "tag": {
                    "description": "Tag for networks that require it",
                    "type": ["string", "null"]
                  }
                },
                "required": ["asset_symbol", "method_id", "key", "address"]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "key": {
                          "description": "The saved withdrawal key",
                          "type": "string"
                        },
                        "tag": {
                          "description": "Tag associated with the saved address (when present)",
                          "type": ["string", "null"]
                        }
                      },
                      "required": ["key"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "key": "My cold storage",
                      "tag": null
                    }
                  }
                },
                "example": {
                  "data": {
                    "key": "My cold storage",
                    "tag": null
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/funds/withdrawals/addresses\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"asset_symbol\": \"BTC\",\n    \"asset_type\": \"crypto\",\n    \"method_id\": \"550e8400-e29b-41d4-a716-446655440000\",\n    \"key\": \"wa_01J0M7C0Z9F8YX3GQH8E\",\n    \"address\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f0b8c1\"\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/funds/withdrawals/addresses/{key}": {
      "delete": {
        "operationId": "deleteWithdrawalAddress",
        "summary": "Delete Withdrawal Address",
        "tags": ["Funds"],
        "description": "Delete a saved withdrawal address by key.\n\nOnce deleted, the key cannot be used for new withdrawals until the address is\nsaved again.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "description": "The saved address key to delete",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object"
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {}
                  }
                },
                "example": {
                  "data": {}
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X DELETE \"https://api.services.payward.com/v1/funds/withdrawals/addresses/wa_01J0M7C0Z9F8YX3GQH8E\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": true
        }
      },
      "patch": {
        "operationId": "updateWithdrawalAddress",
        "summary": "Update Withdrawal Address",
        "tags": ["Funds"],
        "description": "Update a saved withdrawal address key.\n\nThis endpoint renames an existing key; the withdrawal destination itself\nremains unchanged.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "path",
            "name": "key",
            "required": true,
            "schema": {
              "description": "The saved address key to update",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string",
              "format": "uuid",
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "style": "simple",
            "description": "Client-generated UUIDv4 for safe retries. Sent as the `Idempotency-Key` HTTP header. Replayed responses include the `Idempotent-Replayed: true` header."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "new_key": {
                    "description": "New saved address key",
                    "type": "string"
                  }
                },
                "required": ["new_key"]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "key": {
                          "description": "The updated key",
                          "type": "string"
                        }
                      },
                      "required": ["key"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "key": "My cold storage"
                    }
                  }
                },
                "example": {
                  "data": {
                    "key": "My cold storage"
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X PATCH \"https://api.services.payward.com/v1/funds/withdrawals/addresses/wa_01J0M7C0Z9F8YX3GQH8E\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"new_key\": \"example\"\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/funds/withdrawals": {
      "post": {
        "operationId": "withdrawFunds",
        "summary": "Withdraw Funds",
        "tags": ["Funds"],
        "description": "Withdraw funds from the account identified by `account_id`.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string",
              "format": "uuid",
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "style": "simple",
            "description": "Client-generated UUIDv4 for safe retries. Sent as the `Idempotency-Key` HTTP header. Replayed responses include the `Idempotent-Replayed: true` header."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "asset_symbol": {
                    "description": "Ticker symbol of the asset to withdraw.",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/AssetSymbol"
                      }
                    ]
                  },
                  "asset_type": {
                    "description": "Classification of the asset. Pair with `asset_symbol` to disambiguate when the same ticker exists across asset classes. Defaults to `crypto`.",
                    "type": "string",
                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                    "default": "crypto"
                  },
                  "key": {
                    "description": "Saved withdrawal address key",
                    "type": "string"
                  },
                  "amount": {
                    "description": "Amount to withdraw",
                    "$ref": "#/components/schemas/BigDecimal"
                  },
                  "fee_token": {
                    "description": "Fee token from `GET /b2b/funds/withdrawals/methods`, guarantees the quoted fee for 10 minutes.",
                    "type": ["string", "null"]
                  },
                  "preview": {
                    "description": "When `true`, only returns quoted `amount`, `fee`, and `total`; no withdrawal is created.",
                    "default": false,
                    "type": "boolean"
                  }
                },
                "required": ["asset_symbol", "key", "amount"]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "ref_id": {
                          "description": "Reference ID used to track the withdrawal status. Empty when `preview` is `true`.",
                          "type": "string"
                        },
                        "amount": {
                          "description": "Amount that will be sent to the destination (after fees)",
                          "$ref": "#/components/schemas/BigDecimal"
                        },
                        "fee": {
                          "description": "Network fee charged",
                          "$ref": "#/components/schemas/BigDecimal"
                        },
                        "total": {
                          "description": "Total debited from the user balance (amount + fee)",
                          "$ref": "#/components/schemas/BigDecimal"
                        },
                        "fee_token": {
                          "description": "Fee token used to guarantee the quoted fee for 10 minutes.",
                          "type": ["string", "null"]
                        }
                      },
                      "required": ["ref_id", "amount", "fee", "total"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "ref_id": "WD-01J0M7C0Z9F8YX3GQH8E",
                      "amount": "0.50000000",
                      "fee": "0.00050000",
                      "total": "0.50050000",
                      "fee_token": null
                    }
                  }
                },
                "example": {
                  "data": {
                    "ref_id": "WD-01J0M7C0Z9F8YX3GQH8E",
                    "amount": "0.50000000",
                    "fee": "0.00050000",
                    "total": "0.50050000",
                    "fee_token": null
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/funds/withdrawals\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"asset_symbol\": \"BTC\",\n    \"asset_type\": \"crypto\",\n    \"key\": \"wa_01J0M7C0Z9F8YX3GQH8E\",\n    \"amount\": \"1.23\"\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/funds/deposits/addresses": {
      "get": {
        "operationId": "listDepositAddresses",
        "tags": ["Funds"],
        "summary": "List deposit addresses",
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "description": "Lists crypto deposit addresses available for use with a funding method on the selected account.\n\nCompatible funding methods can share an address space, so the same address may be returned for more than one asset or network. The `method_id` selects a context in which the returned addresses are valid; it does not identify the method through which an address was originally claimed.\n\nResults are returned in a stable order. A page token is valid only with the same account and funding method used to obtain it.\n",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "description": "Public identifier of the account that owns the deposit addresses.",
            "example": "WVSD33HRMGSZUBM7",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            }
          },
          {
            "name": "method_id",
            "in": "query",
            "required": true,
            "description": "Crypto funding method identifier returned by the deposit-methods endpoint.",
            "example": "479c45eb-6558-430a-8794-4308137d2588",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Crypto deposit addresses available for the selected account and method.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDepositAddressesResult"
                },
                "examples": {
                  "stellar": {
                    "summary": "Stellar deposit address with memo",
                    "value": {
                      "data": [
                        {
                          "address": "GDHHZIA4OO5GUQXMWIFWA3JSJRJCJRNDTKJYIAURARM4R2QNMQ2NC6YH",
                          "memo": "7421968351048273065"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                },
                "examples": {
                  "invalid-request": {
                    "summary": "Invalid request",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "asset_symbol",
                            "message": "must contain between 1 and 16 characters"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                },
                "examples": {
                  "authentication-failed": {
                    "summary": "Authentication failed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unauthenticated",
                        "status": 401
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                },
                "examples": {
                  "caller-is-not-allowed": {
                    "summary": "Caller is not allowed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "forbidden",
                        "status": 403
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                },
                "examples": {
                  "rate-limit-exceeded": {
                    "summary": "Rate limit exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "resource_exhausted",
                        "status": 429
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                },
                "examples": {
                  "internal-error": {
                    "summary": "Internal server error",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "internal",
                        "status": 500
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                },
                "examples": {
                  "service-unavailable": {
                    "summary": "Service unavailable",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unavailable",
                        "status": 503
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Request deadline exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                },
                "examples": {
                  "request-deadline-exceeded": {
                    "summary": "Request deadline exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "deadline_exceeded",
                        "status": 504
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "claimDepositAddress",
        "tags": ["Funds"],
        "summary": "Claim deposit address",
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "description": "Claims a crypto deposit address for a funding method available to the selected account.\n\nBTC over Lightning uses a per-payment invoice instead of a reusable deposit address. Use [Create Lightning invoice](/api-reference/funds/create-lightning-invoice).\n\nThis operation is not idempotent. If a request times out or otherwise has an unknown outcome, do not automatically retry it because an address may already have been claimed. First list the account's claimed deposit addresses or contact Payward Services support.\n\nCompatible funding methods can share address limits. List and reuse an existing address before claiming another. When the shared limit has been reached and no existing address is eligible to expire, the request returns `409` with code `deposit_address_limit_reached`.\n",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "description": "Public identifier of the account that owns the deposit addresses.",
            "example": "WVSD33HRMGSZUBM7",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClaimDepositAddressBody"
              },
              "examples": {
                "stellar": {
                  "summary": "Claim a Stellar deposit address",
                  "value": {
                    "method_id": "479c45eb-6558-430a-8794-4308137d2588"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Crypto deposit address claimed for the selected account and method.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClaimDepositAddressResult"
                },
                "examples": {
                  "stellar": {
                    "summary": "Stellar deposit address with memo",
                    "value": {
                      "data": {
                        "address": "GDHHZIA4OO5GUQXMWIFWA3JSJRJCJRNDTKJYIAURARM4R2QNMQ2NC6YH",
                        "memo": "7421968351048273065"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                },
                "examples": {
                  "invalid-request": {
                    "summary": "Invalid request",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "asset_symbol",
                            "message": "must contain between 1 and 16 characters"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                },
                "examples": {
                  "authentication-failed": {
                    "summary": "Authentication failed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unauthenticated",
                        "status": 401
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                },
                "examples": {
                  "caller-is-not-allowed": {
                    "summary": "Caller is not allowed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "forbidden",
                        "status": 403
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                },
                "examples": {
                  "rate-limit-exceeded": {
                    "summary": "Rate limit exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "resource_exhausted",
                        "status": 429
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                },
                "examples": {
                  "internal-error": {
                    "summary": "Internal server error",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "internal",
                        "status": 500
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                },
                "examples": {
                  "service-unavailable": {
                    "summary": "Service unavailable",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unavailable",
                        "status": 503
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Request deadline exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                },
                "examples": {
                  "request-deadline-exceeded": {
                    "summary": "Request deadline exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "deadline_exceeded",
                        "status": 504
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounts/{account_id}/funds/deposits/lightning-invoices": {
      "post": {
        "responses": {
          "200": {
            "description": "Lightning invoice created for the selected account.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateLightningInvoiceResult"
                },
                "examples": {
                  "bitcoin": {
                    "summary": "Invoice for a Bitcoin deposit",
                    "value": {
                      "data": {
                        "invoice": "lnbc500u1p3xnhl2pp5jptserfk3zk4qy42tlucycrfwxhydvlemu9pqr93tuzlv9cc7g3sqdqqcqzpgxqyz5vqsp5usyc4lk9chsfp53kvcnvq456ganh60d89reykdngsmtj6yw3nhvq9qyyssqjcewm5cjwz4a6rfjx77c490yced6pemk0upkxhy89cmm7sct66k8gneanwykzgdrwrfje69h9u5u0w57rrcsysas7gadwmzxc8c6t0spjazup6",
                        "expires_at": "2026-08-03T12:34:56Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Request validation failed or an invoice cannot be created for the requested asset and amount.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                },
                "examples": {
                  "invalid-request": {
                    "summary": "Invalid request",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "asset_symbol",
                            "message": "must contain between 1 and 16 characters"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  },
                  "amount-too-small": {
                    "summary": "Amount below the Lightning deposit minimum",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "amount",
                            "message": "Amount is below the minimum for Lightning deposits"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  },
                  "amount-too-large": {
                    "summary": "Amount above the Lightning deposit maximum",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "amount",
                            "message": "Amount is above the maximum for Lightning deposits"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  },
                  "unsupported-asset": {
                    "summary": "Asset not supported for Lightning deposits",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "asset_symbol",
                            "message": "Asset is not supported for Lightning deposits"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                },
                "examples": {
                  "authentication-failed": {
                    "summary": "Authentication failed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unauthenticated",
                        "status": 401
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                },
                "examples": {
                  "caller-is-not-allowed": {
                    "summary": "Caller is not allowed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "forbidden",
                        "status": 403
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                },
                "examples": {
                  "rate-limit-exceeded": {
                    "summary": "Rate limit exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "resource_exhausted",
                        "status": 429
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                },
                "examples": {
                  "internal-error": {
                    "summary": "Internal server error",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "internal",
                        "status": 500
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                },
                "examples": {
                  "service-unavailable": {
                    "summary": "Service unavailable",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unavailable",
                        "status": 503
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Request deadline exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                },
                "examples": {
                  "request-deadline-exceeded": {
                    "summary": "Request deadline exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "deadline_exceeded",
                        "status": 504
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "operationId": "createLightningInvoice",
        "tags": ["Funds"],
        "summary": "Create Lightning invoice",
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "description": "Creates a single-use BOLT11 payment request for depositing an exact amount to the selected account over the Bitcoin Lightning Network.\n\nEach successful request creates a new invoice. The invoice must be paid in full, in a single payment, before `expires_at`. A paid invoice cannot be reused, and payments to an expired invoice are rejected by the network. Use the deposit-methods endpoint to discover the Lightning deposit limits that apply to the account; amounts outside those limits are rejected with `400`.\n\nThis operation is not idempotent. If a request times out or otherwise has an unknown outcome, create a new invoice instead of reusing the earlier response; unpaid invoices expire on their own.\n\nCompleted deposits appear in the account's Portfolio transactions and are announced by `transaction.deposit` webhook events when a webhook subscription is configured.\n",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "description": "Public identifier of the account that will receive the deposit.",
            "example": "WVSD33HRMGSZUBM7",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLightningInvoiceBody"
              },
              "examples": {
                "bitcoin": {
                  "summary": "Invoice for a Bitcoin deposit",
                  "value": {
                    "asset_symbol": "BTC",
                    "amount": "0.0005"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounts/{account_id}/funds/deposits/methods/{asset_symbol}": {
      "get": {
        "operationId": "listDepositMethods",
        "tags": ["Funds"],
        "summary": "List deposit methods",
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "description": "Returns the deposit methods available to the selected account for an asset.\n\nUse `method` to distinguish options on the same network, and use each method's stable `id` as `method_id` when claiming or listing deposit addresses. `maximum` combines the method's per-transaction cap with the account's remaining supported amount-based rolling limits. Supported count-based limits are listed separately in `period_limits`. These values are informational and may change before a deposit is processed.\n",
        "parameters": [
          {
            "name": "account_id",
            "in": "path",
            "required": true,
            "description": "Public identifier of the account that will receive deposits.",
            "example": "WVSD33HRMGSZUBM7",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            }
          },
          {
            "name": "asset_symbol",
            "in": "path",
            "required": true,
            "description": "Asset symbol to discover deposit methods for. Use a symbol returned by the PWS Assets API.",
            "example": "BTC",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 16
            }
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/PageToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Deposit methods available for the selected account and asset.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DepositMethodsResult"
                },
                "examples": {
                  "bitcoin": {
                    "summary": "Bitcoin deposit method",
                    "value": {
                      "data": [
                        {
                          "id": "2fa11f79-eeba-4d4e-afda-029abff6e29e",
                          "network": "Bitcoin",
                          "network_info": {
                            "explorer": "https://mempool.space/tx/",
                            "confirmations": "3",
                            "est_confirmation_time": "45"
                          },
                          "minimum": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto",
                            "amount": "0.0001"
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                },
                "examples": {
                  "invalid-request": {
                    "summary": "Invalid request",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "asset_symbol",
                            "message": "must contain between 1 and 16 characters"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                },
                "examples": {
                  "authentication-failed": {
                    "summary": "Authentication failed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unauthenticated",
                        "status": 401
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                },
                "examples": {
                  "caller-is-not-allowed": {
                    "summary": "Caller is not allowed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "forbidden",
                        "status": 403
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                },
                "examples": {
                  "rate-limit-exceeded": {
                    "summary": "Rate limit exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "resource_exhausted",
                        "status": 429
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                },
                "examples": {
                  "internal-error": {
                    "summary": "Internal server error",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "internal",
                        "status": 500
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                },
                "examples": {
                  "service-unavailable": {
                    "summary": "Service unavailable",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unavailable",
                        "status": 503
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Request deadline exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                },
                "examples": {
                  "request-deadline-exceeded": {
                    "summary": "Request deadline exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "deadline_exceeded",
                        "status": 504
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/accounts/{account_id}/funds/withdrawals/methods/{asset_symbol}": {
      "get": {
        "operationId": "listWithdrawalMethods",
        "summary": "List Withdrawal Methods",
        "tags": ["Funds"],
        "description": "List available withdrawal methods for a given asset.\n\nReturns withdrawal methods with networks, estimated fees, and limits.\nUse `method_id` and (optionally) `fee_token` to prepare withdrawals.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "path",
            "name": "asset_symbol",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/AssetSymbol"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "description": "Stable UUID identifier of the withdrawal method.",
                            "type": "string",
                            "format": "uuid"
                          },
                          "network": {
                            "description": "Network / method display name (e.g., \"Bitcoin\", \"Ethereum\")",
                            "type": ["string", "null"]
                          },
                          "network_info": {
                            "description": "Blockchain network metadata",
                            "type": ["object", "null"],
                            "properties": {
                              "explorer": {
                                "description": "Link to the blockchain explorer",
                                "type": "string"
                              },
                              "confirmations": {
                                "description": "Number of confirmations required",
                                "type": "string"
                              },
                              "est_confirmation_time": {
                                "description": "Estimated time to reach the required confirmations",
                                "type": "string"
                              },
                              "contract_address": {
                                "description": "Token contract address (for ERC-20 / wrapped tokens)",
                                "type": ["string", "null"]
                              }
                            },
                            "required": ["explorer", "confirmations", "est_confirmation_time"]
                          },
                          "fee": {
                            "description": "Estimated withdrawal fee, denominated in the requested asset.",
                            "type": ["object", "null"],
                            "properties": {
                              "symbol": {
                                "description": "Ticker symbol of the asset.",
                                "allOf": [
                                  {
                                    "$ref": "#/components/schemas/AssetSymbol"
                                  }
                                ]
                              },
                              "name": {
                                "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC).",
                                "type": ["string", "null"]
                              },
                              "type": {
                                "description": "Classification of the asset.",
                                "type": "string",
                                "enum": ["fiat", "crypto", "stablecoin", "xstock"]
                              },
                              "amount": {
                                "description": "The amount.",
                                "$ref": "#/components/schemas/BigDecimal"
                              }
                            },
                            "required": ["symbol", "type", "amount"]
                          },
                          "fee_token": {
                            "description": "Opaque fee token valid for 10 minutes. Submit in the withdrawal request to guarantee the quoted fee.",
                            "type": ["string", "null"]
                          },
                          "minimum": {
                            "description": "Minimum withdrawal amount, denominated in the requested asset.",
                            "type": ["object", "null"],
                            "properties": {
                              "symbol": {
                                "description": "Ticker symbol of the asset.",
                                "allOf": [
                                  {
                                    "$ref": "#/components/schemas/AssetSymbol"
                                  }
                                ]
                              },
                              "name": {
                                "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC).",
                                "type": ["string", "null"]
                              },
                              "type": {
                                "description": "Classification of the asset.",
                                "type": "string",
                                "enum": ["fiat", "crypto", "stablecoin", "xstock"]
                              },
                              "amount": {
                                "description": "The amount.",
                                "$ref": "#/components/schemas/BigDecimal"
                              }
                            },
                            "required": ["symbol", "type", "amount"]
                          },
                          "maximum": {
                            "description": "Maximum withdrawal amount for this method, accounting for the per-transaction cap and remaining user limits.",
                            "type": ["object", "null"],
                            "properties": {
                              "symbol": {
                                "description": "Ticker symbol of the asset.",
                                "allOf": [
                                  {
                                    "$ref": "#/components/schemas/AssetSymbol"
                                  }
                                ]
                              },
                              "name": {
                                "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC).",
                                "type": ["string", "null"]
                              },
                              "type": {
                                "description": "Classification of the asset.",
                                "type": "string",
                                "enum": ["fiat", "crypto", "stablecoin", "xstock"]
                              },
                              "amount": {
                                "description": "The amount.",
                                "$ref": "#/components/schemas/BigDecimal"
                              }
                            },
                            "required": ["symbol", "type", "amount"]
                          }
                        },
                        "required": ["id"]
                      },
                      "description": "Result page."
                    },
                    "next_page_token": {
                      "description": "Opaque cursor for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": [
                      {
                        "id": "b3a7d8b4-9f36-4c2e-9c1e-7b9e6f9a0a11",
                        "network": "Bitcoin",
                        "network_info": {
                          "explorer": "https://blockstream.info/tx/{txid}",
                          "confirmations": "3",
                          "est_confirmation_time": "30 minutes",
                          "contract_address": null
                        },
                        "fee": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.00050000"
                        },
                        "fee_token": "eyJhbGciOiJIUzI1NiJ9.eyJmZWUiOiIwLjAwMDUiLCJleHAiOjE3MTAwMDB9.abc",
                        "minimum": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.00100000"
                        },
                        "maximum": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "500.00000000"
                        }
                      }
                    ],
                    "next_page_token": null
                  }
                },
                "example": {
                  "data": [
                    {
                      "id": "b3a7d8b4-9f36-4c2e-9c1e-7b9e6f9a0a11",
                      "network": "Bitcoin",
                      "network_info": {
                        "explorer": "https://blockstream.info/tx/{txid}",
                        "confirmations": "3",
                        "est_confirmation_time": "30 minutes",
                        "contract_address": null
                      },
                      "fee": {
                        "symbol": "BTC",
                        "name": "Bitcoin",
                        "type": "crypto",
                        "amount": "0.00050000"
                      },
                      "fee_token": "eyJhbGciOiJIUzI1NiJ9.eyJmZWUiOiIwLjAwMDUiLCJleHAiOjE3MTAwMDB9.abc",
                      "minimum": {
                        "symbol": "BTC",
                        "name": "Bitcoin",
                        "type": "crypto",
                        "amount": "0.00100000"
                      },
                      "maximum": {
                        "symbol": "BTC",
                        "name": "Bitcoin",
                        "type": "crypto",
                        "amount": "500.00000000"
                      }
                    }
                  ],
                  "next_page_token": null
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/funds/withdrawals/methods/USDC\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/portfolio/summary": {
      "get": {
        "operationId": "getPortfolioSummary",
        "summary": "Get Portfolio Summary",
        "tags": ["Portfolio"],
        "description": "Get the portfolio summary for a user.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "description": "Ticker symbol of the quote asset to use for all valuations and PnL calculations in the response (e.g. `USD`, `USDC`). Defaults to `USD`.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssetSymbol"
                }
              ],
              "default": "USD"
            }
          },
          {
            "in": "query",
            "name": "quote_type",
            "description": "Classification of the quote asset. Supports `fiat` and `stablecoin`.",
            "schema": {
              "type": "string",
              "enum": ["fiat", "stablecoin"],
              "default": "fiat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "quote_symbol": {
                          "description": "The asset used as the quote currency for all values in the response. Echoes the `quote_symbol` query parameter (or its default).",
                          "type": "string",
                          "maxLength": 16
                        },
                        "quote_type": {
                          "description": "Classification of the quote asset. Echoes the `quote_type` query parameter (or its default).",
                          "type": "string",
                          "enum": ["fiat", "stablecoin"]
                        },
                        "value": {
                          "example": "1.23",
                          "description": "The total portfolio value, in the quote currency.",
                          "type": "string",
                          "format": "decimal128",
                          "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                          "minLength": 1,
                          "maxLength": 64
                        },
                        "cost_basis": {
                          "example": "1.23",
                          "description": "The total cost basis of the portfolio, calculated as the sum of the cost bases of all individual assets",
                          "type": ["string", "null"],
                          "format": "decimal128",
                          "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                          "minLength": 1,
                          "maxLength": 64
                        },
                        "available": {
                          "example": "1.23",
                          "description": "The freely available balance for trading or withdrawal.",
                          "type": "string",
                          "format": "decimal128",
                          "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                          "minLength": 1,
                          "maxLength": 64
                        },
                        "withheld": {
                          "example": "1.23",
                          "description": "The total value of funds currently withheld across the platform. Includes assets reserved for open orders, earn bonding/unbonding, and pending withdrawals.",
                          "type": "string",
                          "format": "decimal128",
                          "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                          "minLength": 1,
                          "maxLength": 64
                        },
                        "open_orders": {
                          "example": "1.23",
                          "description": "The value of balances specifically held for open orders.",
                          "type": "string",
                          "format": "decimal128",
                          "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                          "minLength": 1,
                          "maxLength": 64
                        },
                        "pnl": {
                          "type": "object",
                          "properties": {
                            "unrealized": {
                              "example": "1.23",
                              "description": "Unrealized lots PNL",
                              "type": ["string", "null"],
                              "format": "decimal128",
                              "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                              "minLength": 1,
                              "maxLength": 64
                            }
                          },
                          "description": "Profit-and-loss summary across the user's holdings."
                        }
                      },
                      "required": ["quote_symbol", "quote_type", "value", "available", "withheld", "open_orders"]
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "summary": {
                    "summary": "Portfolio summary",
                    "value": {
                      "data": {
                        "quote_symbol": "USD",
                        "quote_type": "fiat",
                        "value": "12500.42",
                        "cost_basis": "10000.00",
                        "available": "2500.00",
                        "withheld": "125.00",
                        "open_orders": "125.00",
                        "pnl": {
                          "unrealized": "2500.42"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/accounts/ABCD1234EFGH5678/portfolio/summary\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/portfolio/history": {
      "get": {
        "operationId": "listPortfolioHistory",
        "summary": "List Portfolio History",
        "tags": ["Portfolio"],
        "description": "Lists historical balances and valuations for a user's portfolio.\n\nA maximum of **365 data points** is returned per request.\n\nImportant notes:\n\n- A missing asset balance at the start of the range means the user did not hold that asset at that time.\n- A zero balance means the user may have held the asset previously but did not hold it at that snapshot.\n- The latest daily balance can be delayed by up to about five hours after UTC midnight while data is processed.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "query",
            "name": "assets",
            "deprecated": false,
            "description": "Filter historical balances by asset references. Each entry is an asset reference with `symbol` and `type`. Encode using indexed deep-object syntax, e.g. `?assets[0][symbol]=BTC&assets[0][type]=crypto&assets[1][symbol]=ETH&assets[1][type]=crypto`.",
            "required": false,
            "style": "deepObject",
            "explode": true,
            "schema": {
              "type": ["array", "null"],
              "items": {
                "$ref": "#/components/schemas/AssetRef"
              }
            }
          },
          {
            "in": "query",
            "name": "start_timestamp",
            "description": "Start of the time window (inclusive). Only results whose timestamp is greater than or equal to `start_timestamp` are returned.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "end_timestamp",
            "description": "End of the time window (exclusive). Only results whose timestamp is strictly less than `end_timestamp` are returned.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "description": "Ticker symbol of the quote asset to use for all valuations and PnL calculations in the response (e.g. `USD`, `USDC`). Defaults to `USD`.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssetSymbol"
                }
              ],
              "default": "USD"
            }
          },
          {
            "in": "query",
            "name": "quote_type",
            "description": "Classification of the quote asset. Supports `fiat` and `stablecoin`.",
            "schema": {
              "type": "string",
              "enum": ["fiat", "stablecoin"],
              "default": "fiat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Time series data points for the queried window. A maximum of 365 data points is returned per request.",
                      "type": "array",
                      "items": {
                        "description": "A single point in the portfolio time series.",
                        "type": "object",
                        "properties": {
                          "timestamp": {
                            "description": "Timestamp for this snapshot.",
                            "$ref": "#/components/schemas/DateTime"
                          },
                          "assets": {
                            "description": "Per-asset balances at this timestamp when requested. Each entry carries the asset reference (`symbol` + `type`) and its native-asset balance.",
                            "type": "array",
                            "items": {
                              "description": "A single asset balance.",
                              "type": "object",
                              "properties": {
                                "symbol": {
                                  "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 10
                                },
                                "type": {
                                  "description": "Classification of the asset.",
                                  "type": "string",
                                  "enum": ["fiat", "crypto", "stablecoin", "equity", "xstock"]
                                },
                                "amount": {
                                  "description": "Decimal amount as a string to preserve precision.",
                                  "allOf": [
                                    {
                                      "$ref": "#/components/schemas/BigDecimal"
                                    }
                                  ]
                                }
                              },
                              "required": ["symbol", "type", "amount"]
                            },
                            "example": [
                              {
                                "symbol": "BTC",
                                "type": "crypto",
                                "amount": "0.50000000"
                              },
                              {
                                "symbol": "ETH",
                                "type": "crypto",
                                "amount": "2.50000000"
                              },
                              {
                                "symbol": "USD",
                                "type": "fiat",
                                "amount": "1000.00"
                              }
                            ]
                          },
                          "value": {
                            "description": "The total portfolio value at this snapshot, in the quote currency.",
                            "$ref": "#/components/schemas/BigDecimal"
                          },
                          "total_pnl": {
                            "description": "Total profit and loss at this snapshot, in the quote currency.",
                            "anyOf": [
                              {
                                "$ref": "#/components/schemas/BigDecimal"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        },
                        "required": ["timestamp"]
                      }
                    },
                    "quote_symbol": {
                      "description": "The asset used as the quote currency for all values in `data`. Echoes the `quote_symbol` query parameter (or its default).",
                      "type": "string",
                      "maxLength": 16
                    },
                    "quote_type": {
                      "description": "Classification of the quote asset. Echoes the `quote_type` query parameter (or its default).",
                      "type": "string",
                      "enum": ["fiat", "stablecoin"]
                    },
                    "start_timestamp": {
                      "description": "Start of the time window covered by `data`. Echoes the `start_timestamp` query parameter (or its default).",
                      "type": "string",
                      "format": "date-time"
                    },
                    "end_timestamp": {
                      "description": "End of the time window covered by `data`. Echoes the `end_timestamp` query parameter (or its default).",
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": ["data", "quote_symbol", "quote_type", "start_timestamp", "end_timestamp"],
                  "example": {
                    "data": [
                      {
                        "timestamp": "2026-04-26T00:00:00Z",
                        "assets": [
                          {
                            "symbol": "BTC",
                            "type": "crypto",
                            "amount": "0.50000000"
                          },
                          {
                            "symbol": "ETH",
                            "type": "crypto",
                            "amount": "2.50000000"
                          },
                          {
                            "symbol": "USD",
                            "type": "fiat",
                            "amount": "1000.00"
                          }
                        ],
                        "value": "42775.42",
                        "total_pnl": "4655.42"
                      },
                      {
                        "timestamp": "2026-04-25T00:00:00Z",
                        "assets": [
                          {
                            "symbol": "BTC",
                            "type": "crypto",
                            "amount": "0.50000000"
                          },
                          {
                            "symbol": "ETH",
                            "type": "crypto",
                            "amount": "2.50000000"
                          },
                          {
                            "symbol": "USD",
                            "type": "fiat",
                            "amount": "1000.00"
                          }
                        ],
                        "value": "42390.18",
                        "total_pnl": "4270.18"
                      }
                    ],
                    "quote_symbol": "USD",
                    "quote_type": "fiat",
                    "start_timestamp": "2026-04-25T00:00:00Z",
                    "end_timestamp": "2026-04-26T23:59:59Z"
                  }
                },
                "example": {
                  "data": [
                    {
                      "timestamp": "2026-04-26T00:00:00Z",
                      "assets": [
                        {
                          "symbol": "BTC",
                          "type": "crypto",
                          "amount": "0.50000000"
                        },
                        {
                          "symbol": "ETH",
                          "type": "crypto",
                          "amount": "2.50000000"
                        },
                        {
                          "symbol": "USD",
                          "type": "fiat",
                          "amount": "1000.00"
                        }
                      ],
                      "value": "42775.42",
                      "total_pnl": "4655.42"
                    },
                    {
                      "timestamp": "2026-04-25T00:00:00Z",
                      "assets": [
                        {
                          "symbol": "BTC",
                          "type": "crypto",
                          "amount": "0.50000000"
                        },
                        {
                          "symbol": "ETH",
                          "type": "crypto",
                          "amount": "2.50000000"
                        },
                        {
                          "symbol": "USD",
                          "type": "fiat",
                          "amount": "1000.00"
                        }
                      ],
                      "value": "42390.18",
                      "total_pnl": "4270.18"
                    }
                  ],
                  "quote_symbol": "USD",
                  "quote_type": "fiat",
                  "start_timestamp": "2026-04-25T00:00:00Z",
                  "end_timestamp": "2026-04-26T23:59:59Z"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/accounts/ABCD1234EFGH5678/portfolio/history\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/portfolio/details": {
      "get": {
        "operationId": "listPortfolioDetails",
        "summary": "List Portfolio Details",
        "tags": ["Portfolio"],
        "description": "Lists owned assets in a user's portfolio.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "description": "Ticker symbol of the quote asset to use for all valuations and PnL calculations in the response (e.g. `USD`, `USDC`). Defaults to `USD`.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssetSymbol"
                }
              ],
              "default": "USD"
            }
          },
          {
            "in": "query",
            "name": "quote_type",
            "description": "Classification of the quote asset. Supports `fiat` and `stablecoin`.",
            "schema": {
              "type": "string",
              "enum": ["fiat", "stablecoin"],
              "default": "fiat"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "List of assets owned by the user with their detailed information.",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "A single asset position in the user's portfolio.",
                        "properties": {
                          "symbol": {
                            "description": "Asset symbol. Quantities denominated in the asset itself appear without a suffix; quantities denominated in the user's quote currency are suffixed with `_in_quote`.",
                            "type": "string",
                            "maxLength": 16
                          },
                          "type": {
                            "description": "Classification of the asset (`fiat`, `crypto`, `stablecoin`, `equity`, or `xstock`).",
                            "type": "string",
                            "enum": ["fiat", "crypto", "stablecoin", "equity", "xstock"]
                          },
                          "index_price": {
                            "example": "1.23",
                            "description": "The price of the asset at the time of the last index update.",
                            "type": "string",
                            "format": "decimal128",
                            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "total": {
                            "example": "1.23",
                            "description": "The balance of the asset available for the account. This amount might not all be available for trading, withdrawing, staking etc, as some of it might be locked in margin, pending orders, or in other accounts.",
                            "type": "string",
                            "format": "decimal128",
                            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "total_in_quote": {
                            "example": "1.23",
                            "description": "Value of `total` in the requested quote currency, computed at the current `index_price`.",
                            "type": "string",
                            "format": "decimal128",
                            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "available": {
                            "example": "1.23",
                            "description": "The amount of the asset available for trading or withdrawal. This is `total` after subtracting various holds applied to the account for this asset (e.g. open orders).",
                            "type": ["string", "null"],
                            "format": "decimal128",
                            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "available_in_quote": {
                            "example": "1.23",
                            "description": "Value of `available` in the requested quote currency, computed at the current `index_price`.",
                            "type": ["string", "null"],
                            "format": "decimal128",
                            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "open_orders": {
                            "example": "1.23",
                            "description": "The amount of the asset held in open orders.",
                            "type": "string",
                            "format": "decimal128",
                            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "avg_entry_price_in_quote": {
                            "example": "1.23",
                            "description": "The volume-weighted average price at which the current balance was acquired, expressed in the requested quote currency.",
                            "type": ["string", "null"],
                            "format": "decimal128",
                            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "cost_basis_in_quote": {
                            "example": "1.23",
                            "description": "The total value spent to acquire the current balance, expressed in the requested quote currency.",
                            "type": ["string", "null"],
                            "format": "decimal128",
                            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "pnl": {
                            "description": "PnL details for this asset. The `status` fields can appear independently when calculation state is available. `unrealized` and `realized` are returned only when the amount is available and PWS can expose its reference currency. When either amount field is returned, `reference_currency` is returned with it.",
                            "type": ["object", "null"],
                            "properties": {
                              "unrealized": {
                                "example": "500.00",
                                "description": "Unrealized PnL for the currently held lots of this asset, denominated in `reference_currency`.",
                                "type": ["string", "null"],
                                "format": "decimal128",
                                "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                "minLength": 1,
                                "maxLength": 64
                              },
                              "realized": {
                                "example": "-3.7440",
                                "description": "Total realized PnL for this asset, denominated in `reference_currency`.",
                                "type": ["string", "null"],
                                "format": "decimal128",
                                "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                "minLength": 1,
                                "maxLength": 64
                              },
                              "reference_currency": {
                                "description": "Currency used to calculate the exposed PnL amount fields. Returned only when PWS can identify that currency.",
                                "type": ["object", "null"],
                                "properties": {
                                  "symbol": {
                                    "example": "USD",
                                    "description": "Public symbol of the PnL reference currency.",
                                    "type": "string",
                                    "maxLength": 16
                                  },
                                  "type": {
                                    "description": "Classification of the asset (`fiat`, `crypto`, `stablecoin`, `equity`, or `xstock`).",
                                    "type": "string",
                                    "enum": ["fiat", "crypto", "stablecoin", "equity", "xstock"]
                                  }
                                },
                                "required": ["symbol", "type"]
                              },
                              "status": {
                                "description": "Processing status for the exposed PnL calculations.",
                                "type": ["object", "null"],
                                "properties": {
                                  "unrealized": {
                                    "description": "Whether unrealized PnL is ready or still being calculated.",
                                    "type": ["string", "null"],
                                    "enum": ["ready", "in_progress"]
                                  },
                                  "realized": {
                                    "description": "Whether realized PnL is ready or still being calculated.",
                                    "type": ["string", "null"],
                                    "enum": ["ready", "in_progress"]
                                  }
                                }
                              }
                            }
                          }
                        },
                        "required": ["symbol", "index_price", "total", "open_orders", "total_in_quote"]
                      }
                    },
                    "quote_symbol": {
                      "description": "The asset used as the quote currency for all `*_in_quote` fields. Echoes the `quote_symbol` query parameter (or its default).",
                      "type": "string",
                      "maxLength": 16
                    },
                    "quote_type": {
                      "description": "Classification of the quote asset. Echoes the `quote_type` query parameter (or its default).",
                      "type": "string",
                      "enum": ["fiat", "stablecoin"]
                    }
                  },
                  "required": ["data", "quote_symbol", "quote_type"],
                  "example": {
                    "data": [
                      {
                        "symbol": "BTC",
                        "type": "crypto",
                        "index_price": "63000.00",
                        "total": "0.5",
                        "total_in_quote": "31500.00",
                        "available": "0.45",
                        "available_in_quote": "28350.00",
                        "open_orders": "0.05",
                        "avg_entry_price_in_quote": "58000.00",
                        "cost_basis_in_quote": "29000.00",
                        "pnl": {
                          "unrealized": "3500.00",
                          "realized": "-3.7440",
                          "reference_currency": {
                            "symbol": "USD",
                            "type": "fiat"
                          },
                          "status": {
                            "unrealized": "ready",
                            "realized": "ready"
                          }
                        }
                      },
                      {
                        "symbol": "USD",
                        "type": "fiat",
                        "index_price": "1.00",
                        "total": "5000.00",
                        "total_in_quote": "5000.00",
                        "available": "5000.00",
                        "available_in_quote": "5000.00",
                        "open_orders": "0.00",
                        "avg_entry_price_in_quote": null,
                        "cost_basis_in_quote": null
                      }
                    ],
                    "quote_symbol": "USD",
                    "quote_type": "fiat"
                  }
                },
                "example": {
                  "data": [
                    {
                      "symbol": "BTC",
                      "type": "crypto",
                      "index_price": "63000.00",
                      "total": "0.5",
                      "total_in_quote": "31500.00",
                      "available": "0.45",
                      "available_in_quote": "28350.00",
                      "open_orders": "0.05",
                      "avg_entry_price_in_quote": "58000.00",
                      "cost_basis_in_quote": "29000.00",
                      "pnl": {
                        "unrealized": "3500.00",
                        "realized": "-3.7440",
                        "reference_currency": {
                          "symbol": "USD",
                          "type": "fiat"
                        },
                        "status": {
                          "unrealized": "ready",
                          "realized": "ready"
                        }
                      }
                    },
                    {
                      "symbol": "USD",
                      "type": "fiat",
                      "index_price": "1.00",
                      "total": "5000.00",
                      "total_in_quote": "5000.00",
                      "available": "5000.00",
                      "available_in_quote": "5000.00",
                      "open_orders": "0.00",
                      "avg_entry_price_in_quote": null,
                      "cost_basis_in_quote": null
                    }
                  ],
                  "quote_symbol": "USD",
                  "quote_type": "fiat"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/accounts/ABCD1234EFGH5678/portfolio/details\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/portfolio/transactions": {
      "get": {
        "operationId": "listPortfolioTransactions",
        "summary": "List Portfolio Transactions",
        "tags": ["Portfolio"],
        "description": "Lists account portfolio transactions with optional filters for type, asset, status, transaction ID, originating reference, time range, and sort direction. Results are cursor-paginated.\nResults are ordered newest first by default; set `sort_direction=asc` for oldest first. Page tokens are valid for up to 24 hours.\n\nTransactions can appear asynchronously. To discover new activity, poll this operation with the applicable `types` filters and an appropriate time range, omitting `statuses` or including `in_progress` while a transaction is being processed. For a transfer created by `POST /v1/transfers`, use `types=transfer` and the `from` account from the create request. The `transfer_id` returned by create is the `id` in a `reference` with `kind=transfer`. Once the transaction appears, that reference can be submitted in `references` for deterministic subsequent lookup. A transfer may appear with `status=in_progress` before it reaches the terminal `successful` or `failed` status; filtering only by `successful` can therefore hide a newly materialized transfer. The first Portfolio response after `POST /v1/transfers` may contain no matching transaction even when the create response has `status=complete`; continue polling until the transaction is present.\n\nA deposit address is not a funding reference: the address together with any required tag or memo describes the payment destination and is not accepted by `references`. The returned transaction `id` uses the `TX` namespace and is distinct from the reference identifier.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "query",
            "name": "page_token",
            "deprecated": false,
            "schema": {
              "description": "Opaque page token returned by a previous response's `next_page_token`. Omit to start from the beginning.",
              "type": ["string", "null"],
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "types",
            "deprecated": false,
            "schema": {
              "description": "Filter by portfolio transaction type.",
              "type": ["array", "null"],
              "items": {
                "type": "string",
                "enum": ["swap", "price_trigger_swap", "earn_reward", "deposit", "withdrawal", "transfer"]
              }
            },
            "example": ["swap", "price_trigger_swap", "transfer"],
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "page_size",
            "deprecated": false,
            "schema": {
              "description": "Number of transactions to return per page. Defaults to 20 if not specified. Maximum 25.",
              "type": ["integer", "null"],
              "format": "uint64",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "assets",
            "deprecated": false,
            "description": "Filter transactions by specific assets. Each entry is an asset reference with `symbol` and `type`. Encode using indexed deep-object syntax, e.g. `?assets[0][symbol]=BTC&assets[0][type]=crypto&assets[1][symbol]=USDT&assets[1][type]=stablecoin`.",
            "required": false,
            "style": "deepObject",
            "explode": true,
            "schema": {
              "type": ["array", "null"],
              "items": {
                "$ref": "#/components/schemas/AssetRef"
              }
            }
          },
          {
            "in": "query",
            "name": "start_timestamp",
            "deprecated": false,
            "schema": {
              "description": "Start of the time window (inclusive). Only results whose timestamp is greater than or equal to `start_timestamp` are returned.",
              "type": ["string", "null"],
              "format": "date-time"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "end_timestamp",
            "deprecated": false,
            "schema": {
              "description": "End of the time window (inclusive). Only results whose timestamp is less than or equal to `end_timestamp` are returned.",
              "type": ["string", "null"],
              "format": "date-time"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "statuses",
            "deprecated": false,
            "schema": {
              "description": "Filter transactions by their status",
              "type": ["array", "null"],
              "items": {
                "description": "Filter criteria for transaction status in query results.",
                "type": "string",
                "enum": ["in_progress", "successful", "failed", "no_status", "uncategorized"]
              }
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "ids",
            "deprecated": false,
            "schema": {
              "description": "Filter transactions by specific transaction IDs",
              "type": ["array", "null"],
              "items": {
                "description": "A unique identifier for a portfolio transaction.",
                "type": "string"
              }
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "sort_direction",
            "deprecated": false,
            "schema": {
              "description": "Direction of the sort. Use `asc` for ascending order (oldest first); `desc` for the inverse.",
              "type": ["string", "null"],
              "enum": ["asc", "desc"],
              "default": "desc"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "quote_symbol",
            "deprecated": false,
            "schema": {
              "description": "Asset to use for quoting amounts and fees in the response. Defaults to `USD`. Quoting is best-effort based on rates at transaction time. If quoting is unavailable, quoted fields will be `null`.",
              "type": ["string", "null"],
              "maxLength": 16,
              "default": "USD"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "quote_type",
            "deprecated": false,
            "schema": {
              "description": "Classification of the quote asset. Supports `fiat` and `stablecoin`.",
              "type": ["string", "null"],
              "enum": ["fiat", "stablecoin"],
              "default": "fiat"
            },
            "style": "form",
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "references",
            "description": "Filter by originating references. Entries are ORed together and combined with `types` and other filters using AND semantics. Reference kind selects the originating system namespace. For a transfer, use `kind=transfer` and the `transfer_id` returned by `POST /v1/transfers`. Reference identifiers are distinct from the `TX` identifiers accepted by `ids`.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/TransactionReference"
              }
            },
            "style": "form",
            "examples": {
              "funding-reference": {
                "summary": "Originating Funding reference",
                "value": [
                  {
                    "kind": "funding",
                    "id": "FTSBuuG-9BctU4m3Emt88submmZVKY"
                  }
                ]
              },
              "transfer-reference": {
                "summary": "Originating Transfer reference",
                "value": [
                  {
                    "kind": "transfer",
                    "id": "TRYCMN7-WXKJM-F47YIM"
                  }
                ]
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "List of portfolio transactions matching the query parameters",
                      "type": "array",
                      "items": {
                        "description": "Comprehensive information about a user portfolio transaction.",
                        "type": "object",
                        "properties": {
                          "id": {
                            "description": "Unique Portfolio transaction identifier in the `TX` namespace. Distinct from the identifier in `reference`.",
                            "type": "string"
                          },
                          "timestamp": {
                            "description": "Timestamp when the transaction occurred",
                            "type": "string",
                            "format": "date-time"
                          },
                          "type": {
                            "description": "Type of portfolio transaction.",
                            "type": "string",
                            "enum": ["swap", "price_trigger_swap", "earn_reward", "deposit", "withdrawal", "transfer"]
                          },
                          "status": {
                            "description": "Current status of the transaction, if available",
                            "type": ["string", "null"],
                            "enum": ["in_progress", "successful", "failed", "no_status", "uncategorized"]
                          },
                          "spend": {
                            "description": "Details about the asset spent in this transaction, if applicable",
                            "type": ["object", "null"],
                            "properties": {
                              "timestamp": {
                                "description": "Timestamp of the funds movement, if available",
                                "type": ["string", "null"],
                                "format": "date-time"
                              },
                              "sub_total": {
                                "description": "Principal amount of the asset involved in the transaction, before fees.",
                                "type": "object",
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "maxLength": 16
                                  },
                                  "name": {
                                    "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                    "type": ["string", "null"]
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                                    "description": "Classification of the asset."
                                  },
                                  "amount": {
                                    "example": "1.23",
                                    "description": "Decimal amount as a string to preserve precision.",
                                    "type": "string",
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "amount_in_quote": {
                                    "example": "1.23",
                                    "description": "Value of `amount` converted to the requested quote currency, if available.",
                                    "type": ["string", "null"],
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["amount", "symbol"]
                              },
                              "fee": {
                                "description": "Fee charged for the transaction, if any",
                                "type": ["object", "null"],
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "maxLength": 16
                                  },
                                  "name": {
                                    "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                    "type": ["string", "null"]
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                                    "description": "Classification of the asset."
                                  },
                                  "amount": {
                                    "example": "1.23",
                                    "description": "Fee amount as a decimal string.",
                                    "type": "string",
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "amount_in_quote": {
                                    "example": "1.23",
                                    "description": "Value of `amount` (the fee) converted to the requested quote currency, if available.",
                                    "type": ["string", "null"],
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["amount", "symbol"]
                              },
                              "total": {
                                "description": "Total amount including fees (debit or credit)",
                                "type": "object",
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "maxLength": 16
                                  },
                                  "name": {
                                    "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                    "type": ["string", "null"]
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                                    "description": "Classification of the asset."
                                  },
                                  "amount": {
                                    "example": "1.23",
                                    "description": "Decimal amount as a string to preserve precision.",
                                    "type": "string",
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "amount_in_quote": {
                                    "example": "1.23",
                                    "description": "Value of `amount` (the total) converted to the requested quote currency, if available.",
                                    "type": ["string", "null"],
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["amount", "symbol"]
                              },
                              "balance": {
                                "description": "Remaining balance after the transaction, if available",
                                "type": ["object", "null"],
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "maxLength": 16
                                  },
                                  "name": {
                                    "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                    "type": ["string", "null"]
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                                    "description": "Classification of the asset."
                                  },
                                  "amount": {
                                    "example": "1.23",
                                    "description": "Decimal amount as a string to preserve precision.",
                                    "type": "string",
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "amount_in_quote": {
                                    "example": "1.23",
                                    "description": "Value of `amount` converted to the requested quote currency, if available.",
                                    "type": ["string", "null"],
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["amount", "symbol"]
                              }
                            },
                            "required": ["sub_total", "total"]
                          },
                          "receive": {
                            "description": "Details about the asset received in this transaction, if applicable",
                            "type": ["object", "null"],
                            "properties": {
                              "timestamp": {
                                "description": "Timestamp of the funds movement, if available",
                                "type": ["string", "null"],
                                "format": "date-time"
                              },
                              "sub_total": {
                                "description": "Principal amount of the asset involved in the transaction, before fees.",
                                "type": "object",
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "maxLength": 16
                                  },
                                  "name": {
                                    "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                    "type": ["string", "null"]
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                                    "description": "Classification of the asset."
                                  },
                                  "amount": {
                                    "example": "1.23",
                                    "description": "Decimal amount as a string to preserve precision.",
                                    "type": "string",
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "amount_in_quote": {
                                    "example": "1.23",
                                    "description": "Value of `amount` converted to the requested quote currency, if available.",
                                    "type": ["string", "null"],
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["amount", "symbol"]
                              },
                              "fee": {
                                "description": "Fee charged for the transaction, if any",
                                "type": ["object", "null"],
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "maxLength": 16
                                  },
                                  "name": {
                                    "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                    "type": ["string", "null"]
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                                    "description": "Classification of the asset."
                                  },
                                  "amount": {
                                    "example": "1.23",
                                    "description": "Fee amount as a decimal string.",
                                    "type": "string",
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "amount_in_quote": {
                                    "example": "1.23",
                                    "description": "Value of `amount` (the fee) converted to the requested quote currency, if available.",
                                    "type": ["string", "null"],
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["amount", "symbol"]
                              },
                              "total": {
                                "description": "Total amount including fees (debit or credit)",
                                "type": "object",
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "maxLength": 16
                                  },
                                  "name": {
                                    "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                    "type": ["string", "null"]
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                                    "description": "Classification of the asset."
                                  },
                                  "amount": {
                                    "example": "1.23",
                                    "description": "Decimal amount as a string to preserve precision.",
                                    "type": "string",
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "amount_in_quote": {
                                    "example": "1.23",
                                    "description": "Value of `amount` (the total) converted to the requested quote currency, if available.",
                                    "type": ["string", "null"],
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["amount", "symbol"]
                              },
                              "balance": {
                                "description": "Remaining balance after the transaction, if available",
                                "type": ["object", "null"],
                                "properties": {
                                  "symbol": {
                                    "type": "string",
                                    "maxLength": 16
                                  },
                                  "name": {
                                    "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                    "type": ["string", "null"]
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": ["fiat", "crypto", "stablecoin", "xstock"],
                                    "description": "Classification of the asset."
                                  },
                                  "amount": {
                                    "example": "1.23",
                                    "description": "Decimal amount as a string to preserve precision.",
                                    "type": "string",
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  },
                                  "amount_in_quote": {
                                    "example": "1.23",
                                    "description": "Value of `amount` converted to the requested quote currency, if available.",
                                    "type": ["string", "null"],
                                    "format": "decimal128",
                                    "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                                    "minLength": 1,
                                    "maxLength": 64
                                  }
                                },
                                "required": ["amount", "symbol"]
                              }
                            },
                            "required": ["sub_total", "total"]
                          },
                          "reference": {
                            "description": "Identifier assigned by the system from which this transaction originated. Omitted when no public originating reference is available. For a transfer, `kind` is `transfer` and `id` is the `transfer_id` returned by `POST /v1/transfers`.",
                            "$ref": "#/components/schemas/TransactionReference"
                          },
                          "details": {
                            "description": "Type-specific detail for this transaction, tagged by `details.type`. Present only for transaction types with extra detail to report; omitted otherwise. New `type` values may be added over time; treat an unrecognised `details.type` as absent rather than as an error.",
                            "$ref": "#/components/schemas/TransactionDetails"
                          }
                        },
                        "required": ["id", "timestamp", "type"]
                      }
                    },
                    "quote_symbol": {
                      "description": "The asset used as the quote currency for all `amount_in_quote` fields. Echoes\nthe `quote_symbol` query parameter or its default.",
                      "type": "string",
                      "maxLength": 16
                    },
                    "quote_type": {
                      "description": "Classification of the quote asset. Echoes the `quote_type` query parameter or its default.",
                      "type": "string",
                      "enum": ["fiat", "stablecoin"]
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": ["data", "quote_symbol", "quote_type"],
                  "example": {
                    "data": [
                      {
                        "id": "tx_01J0M7C0Z9F8YX3GQH8E",
                        "timestamp": "2026-04-15T13:42:18.000Z",
                        "type": "swap",
                        "status": "successful",
                        "spend": {
                          "timestamp": "2026-04-15T13:42:18.500Z",
                          "sub_total": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "1000.00",
                            "amount_in_quote": "1000.00"
                          },
                          "fee": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "5.00",
                            "amount_in_quote": "5.00"
                          },
                          "total": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "1005.00",
                            "amount_in_quote": "1005.00"
                          },
                          "balance": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "4995.00",
                            "amount_in_quote": "4995.00"
                          }
                        },
                        "receive": {
                          "timestamp": "2026-04-15T13:42:18.500Z",
                          "sub_total": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto",
                            "amount": "0.01587302",
                            "amount_in_quote": "1000.00"
                          },
                          "fee": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto",
                            "amount": "0",
                            "amount_in_quote": "0"
                          },
                          "total": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto",
                            "amount": "0.01587302",
                            "amount_in_quote": "1000.00"
                          },
                          "balance": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto",
                            "amount": "0.51587302",
                            "amount_in_quote": "32500.00"
                          }
                        }
                      },
                      {
                        "id": "tx_01J0M7C0Z9F8YX3GQH8G",
                        "timestamp": "2026-04-13T00:00:00.000Z",
                        "type": "earn_reward",
                        "status": "successful",
                        "receive": {
                          "timestamp": "2026-04-13T00:00:00.000Z",
                          "sub_total": {
                            "symbol": "ETH",
                            "name": "Ethereum",
                            "type": "crypto",
                            "amount": "0.00125",
                            "amount_in_quote": "4.50"
                          },
                          "fee": {
                            "symbol": "ETH",
                            "name": "Ethereum",
                            "type": "crypto",
                            "amount": "0",
                            "amount_in_quote": "0"
                          },
                          "total": {
                            "symbol": "ETH",
                            "name": "Ethereum",
                            "type": "crypto",
                            "amount": "0.00125",
                            "amount_in_quote": "4.50"
                          },
                          "balance": {
                            "symbol": "ETH",
                            "name": "Ethereum",
                            "type": "crypto",
                            "amount": "2.50125",
                            "amount_in_quote": "9004.50"
                          }
                        }
                      }
                    ],
                    "next_page_token": "cursor_eyJrIjoxfQ",
                    "quote_symbol": "USD",
                    "quote_type": "fiat"
                  }
                },
                "example": {
                  "data": [
                    {
                      "id": "tx_01J0M7C0Z9F8YX3GQH8E",
                      "timestamp": "2026-04-15T13:42:18.000Z",
                      "type": "swap",
                      "status": "successful",
                      "spend": {
                        "timestamp": "2026-04-15T13:42:18.500Z",
                        "sub_total": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "1000.00",
                          "amount_in_quote": "1000.00"
                        },
                        "fee": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "5.00",
                          "amount_in_quote": "5.00"
                        },
                        "total": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "1005.00",
                          "amount_in_quote": "1005.00"
                        },
                        "balance": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "4995.00",
                          "amount_in_quote": "4995.00"
                        }
                      },
                      "receive": {
                        "timestamp": "2026-04-15T13:42:18.500Z",
                        "sub_total": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.01587302",
                          "amount_in_quote": "1000.00"
                        },
                        "fee": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0",
                          "amount_in_quote": "0"
                        },
                        "total": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.01587302",
                          "amount_in_quote": "1000.00"
                        },
                        "balance": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.51587302",
                          "amount_in_quote": "32500.00"
                        }
                      }
                    },
                    {
                      "id": "tx_01J0M7C0Z9F8YX3GQH8G",
                      "timestamp": "2026-04-13T00:00:00.000Z",
                      "type": "earn_reward",
                      "status": "successful",
                      "receive": {
                        "timestamp": "2026-04-13T00:00:00.000Z",
                        "sub_total": {
                          "symbol": "ETH",
                          "name": "Ethereum",
                          "type": "crypto",
                          "amount": "0.00125",
                          "amount_in_quote": "4.50"
                        },
                        "fee": {
                          "symbol": "ETH",
                          "name": "Ethereum",
                          "type": "crypto",
                          "amount": "0",
                          "amount_in_quote": "0"
                        },
                        "total": {
                          "symbol": "ETH",
                          "name": "Ethereum",
                          "type": "crypto",
                          "amount": "0.00125",
                          "amount_in_quote": "4.50"
                        },
                        "balance": {
                          "symbol": "ETH",
                          "name": "Ethereum",
                          "type": "crypto",
                          "amount": "2.50125",
                          "amount_in_quote": "9004.50"
                        }
                      }
                    }
                  ],
                  "next_page_token": "cursor_eyJrIjoxfQ",
                  "quote_symbol": "USD",
                  "quote_type": "fiat"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/accounts/ABCD1234EFGH5678/portfolio/transactions\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/price-trigger-swaps": {
      "post": {
        "operationId": "createPriceTriggerSwap",
        "summary": "Create price trigger swap",
        "tags": ["Price Trigger Swaps"],
        "description": "Submits a new price trigger swap. The swap remains in `active` status until its `when` condition is met or it is cancelled.\n\nWhen the condition fires, the configured `trade` is executed. On successful execution the swap transitions to `completed` and a `price_trigger_swap.executed` webhook is delivered; the realized `trade.fees` and `trade.rate` are then populated on the swap. If the trade fails, a `price_trigger_swap.execution_failed` webhook is delivered and the swap may be retried; once retries are exhausted the swap is moved to `cancelled` with `reason: \"system\"`.\n\nUse `POST /v1/accounts/{account_id}/price-trigger-swaps/{price_trigger_swap_id}/cancel` to cancel an `active` swap, and `GET /v1/accounts/{account_id}/price-trigger-swaps/{price_trigger_swap_id}` to poll for status.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Request to create a new price trigger swap.",
                "properties": {
                  "trade": {
                    "$ref": "#/components/schemas/PriceTriggerSwapTradeRequest"
                  },
                  "when": {
                    "$ref": "#/components/schemas/PriceTriggerSwapCondition"
                  }
                },
                "required": ["trade", "when"]
              },
              "examples": {
                "buy-btc-under-50k": {
                  "summary": "Spend 100 USD on BTC if BTC drops to 50,000 USD or below",
                  "value": {
                    "external_reference": "buy-dip-btc-001",
                    "trade": {
                      "from": {
                        "symbol": "USD",
                        "type": "fiat",
                        "amount": "100.00"
                      },
                      "to": {
                        "symbol": "BTC",
                        "type": "crypto"
                      },
                      "fee": {
                        "bps": 50
                      }
                    },
                    "when": {
                      "base": {
                        "symbol": "BTC",
                        "type": "crypto"
                      },
                      "quote": {
                        "symbol": "USD",
                        "type": "fiat"
                      },
                      "drops_to": "50000.00"
                    }
                  }
                },
                "sell-btc-at-80k": {
                  "summary": "Sell 0.1 BTC for USD if BTC rises to 80,000 USD or above",
                  "value": {
                    "external_reference": "take-profit-btc-80k",
                    "trade": {
                      "from": {
                        "symbol": "BTC",
                        "type": "crypto",
                        "amount": "0.1"
                      },
                      "to": {
                        "symbol": "USD",
                        "type": "fiat"
                      },
                      "fee": {
                        "bps": 50
                      }
                    },
                    "when": {
                      "base": {
                        "symbol": "BTC",
                        "type": "crypto"
                      },
                      "quote": {
                        "symbol": "USD",
                        "type": "fiat"
                      },
                      "rises_to": "80000.00"
                    }
                  }
                },
                "receive-eth-at-2k": {
                  "summary": "Receive exactly 0.5 ETH if ETH drops to 2,000 USD or below",
                  "value": {
                    "external_reference": "top-up-eth-2k",
                    "trade": {
                      "from": {
                        "symbol": "USD",
                        "type": "fiat"
                      },
                      "to": {
                        "symbol": "ETH",
                        "type": "crypto",
                        "amount": "0.5"
                      },
                      "fee": {
                        "bps": 50
                      }
                    },
                    "when": {
                      "base": {
                        "symbol": "ETH",
                        "type": "crypto"
                      },
                      "quote": {
                        "symbol": "USD",
                        "type": "fiat"
                      },
                      "drops_to": "2000.00"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Swap created. The `Location` header points at the new swap resource. The response body returns only the new swap's `id`; fetch `GET /v1/accounts/{account_id}/price-trigger-swaps/{price_trigger_swap_id}` for the full resource.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Unique identifier for the newly created price trigger swap (prefixed with `swap_`).",
                          "type": "string",
                          "example": "swap_01J0M7C0Z9F8YX3GQH8E"
                        }
                      },
                      "required": ["id"]
                    }
                  }
                },
                "examples": {
                  "buy-btc-under-50k": {
                    "summary": "Order created and waiting for the price trigger",
                    "value": {
                      "data": {
                        "id": "swap_01J0M7C0Z9F8YX3GQH8E"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Location": {
                "description": "Path of the newly created swap, e.g. `/v1/accounts/{account_id}/price-trigger-swaps/swap_01J0M7C0Z9F8YX3GQH8E`. Identical to `GET /v1/accounts/{account_id}/price-trigger-swaps/{price_trigger_swap_id}` with the returned `data.id`.",
                "schema": {
                  "type": "string",
                  "format": "uri-reference",
                  "example": "/v1/accounts/W4BE9868GY65TB6523/price-trigger-swaps/swap_01J0M7C0Z9F8YX3GQH8E"
                }
              },
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "412": {
            "description": "Precondition failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceTriggerSwapTargetPriceAlreadyAvailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/price-trigger-swaps\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"Buy 100 USD of BTC under 50k\",\n    \"trade\": {\n      \"from\": { \"symbol\": \"USD\", \"type\": \"fiat\", \"amount\": \"100.00\" },\n      \"to\": { \"symbol\": \"BTC\", \"type\": \"crypto\" },\n      \"fee\": { \"bps\": 50 }\n    },\n    \"when\": {\n      \"base\": { \"symbol\": \"BTC\", \"type\": \"crypto\" },\n      \"quote\": { \"symbol\": \"USD\", \"type\": \"fiat\" },\n      \"drops_to\": \"50000.00\"\n    }\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "idempotentHint": true,
          "destructiveHint": false
        }
      },
      "get": {
        "operationId": "listPriceTriggerSwaps",
        "summary": "List price trigger swaps",
        "tags": ["Price Trigger Swaps"],
        "description": "Returns a cursor-paginated list of price trigger swaps for the user, optionally filtered by status.\n\nResults are ordered by `created_at` descending (newest first). Pagination uses opaque `page_token` cursors; `next_page_token` is omitted on the final page. To refine results, pass one or more `statuses` query values; omitting the filter returns swaps in any status.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "query",
            "name": "statuses",
            "description": "Filter to swaps in one or more lifecycle statuses. Repeat the parameter to pass multiple values. Omit to include swaps in any status.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": ["active", "completed", "cancelled"]
              },
              "default": []
            },
            "style": "form",
            "explode": true,
            "allowEmptyValue": true
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response's `next_page_token`. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form"
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return on a single page. Defaults to 20, maximum 100.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Price trigger swaps matching the filter, ordered newest first.",
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/PriceTriggerSwap"
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    }
                  }
                },
                "examples": {
                  "first-page": {
                    "summary": "First page of swaps across active and completed statuses",
                    "value": {
                      "data": [
                        {
                          "id": "swap_01J0M7C0Z9F8YX3GQH8E",
                          "external_reference": "buy-dip-btc-001",
                          "trade": {
                            "from": {
                              "symbol": "USD",
                              "name": "US Dollar",
                              "type": "fiat",
                              "amount": "100.00"
                            },
                            "to": {
                              "symbol": "BTC",
                              "name": "Bitcoin",
                              "type": "crypto"
                            }
                          },
                          "when": {
                            "base": {
                              "symbol": "BTC",
                              "name": "Bitcoin",
                              "type": "crypto"
                            },
                            "quote": {
                              "symbol": "USD",
                              "name": "US Dollar",
                              "type": "fiat"
                            },
                            "drops_to": "50000.00"
                          },
                          "status": "active"
                        },
                        {
                          "id": "swap_01J0M7BMRWJTKBN0R0FY",
                          "external_reference": "top-up-eth-2k",
                          "trade": {
                            "from": {
                              "symbol": "USD",
                              "name": "US Dollar",
                              "type": "fiat"
                            },
                            "to": {
                              "symbol": "ETH",
                              "name": "Ethereum",
                              "type": "crypto",
                              "amount": "0.5"
                            },
                            "fees": {
                              "trade": {
                                "symbol": "USD",
                                "name": "US Dollar",
                                "type": "fiat",
                                "amount": "5.00"
                              }
                            },
                            "rate": {
                              "base": {
                                "symbol": "ETH",
                                "name": "Ethereum",
                                "type": "crypto"
                              },
                              "quote": {
                                "symbol": "USD",
                                "name": "US Dollar",
                                "type": "fiat"
                              },
                              "price": "2000.00"
                            }
                          },
                          "when": {
                            "base": {
                              "symbol": "ETH",
                              "name": "Ethereum",
                              "type": "crypto"
                            },
                            "quote": {
                              "symbol": "USD",
                              "name": "US Dollar",
                              "type": "fiat"
                            },
                            "drops_to": "2000.00"
                          },
                          "status": "completed"
                        }
                      ],
                      "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                    }
                  },
                  "last-page": {
                    "summary": "Last page — `next_page_token` is omitted",
                    "value": {
                      "data": [
                        {
                          "id": "swap_01J0M7BHSY6F3RGSJD3K",
                          "external_reference": "dca-sol-001",
                          "trade": {
                            "from": {
                              "symbol": "USD",
                              "name": "US Dollar",
                              "type": "fiat",
                              "amount": "25.00"
                            },
                            "to": {
                              "symbol": "SOL",
                              "name": "Solana",
                              "type": "crypto"
                            }
                          },
                          "when": {
                            "base": {
                              "symbol": "SOL",
                              "name": "Solana",
                              "type": "crypto"
                            },
                            "quote": {
                              "symbol": "USD",
                              "name": "US Dollar",
                              "type": "fiat"
                            },
                            "drops_to": "120.00"
                          },
                          "status": "cancelled",
                          "reason": "user_request"
                        }
                      ]
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/price-trigger-swaps?statuses=active&page_size=20\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/price-trigger-swaps/{price_trigger_swap_id}": {
      "get": {
        "operationId": "getPriceTriggerSwap",
        "summary": "Get price trigger swap",
        "tags": ["Price Trigger Swaps"],
        "description": "Returns the current state of a single price trigger swap by ID.\n\nUse this to poll a swap's `status` after creation, after a webhook delivery, or to inspect the trigger and action that were configured. The response includes the swap's `cancelled_reason` when `status` is `cancelled`.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "path",
            "name": "price_trigger_swap_id",
            "required": true,
            "schema": {
              "description": "ID of the price trigger swap to retrieve (prefixed with `swap_`).",
              "type": "string"
            },
            "style": "simple"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PriceTriggerSwap"
                    }
                  }
                },
                "examples": {
                  "active-swap": {
                    "summary": "Swap in `active` status awaiting trigger evaluation",
                    "value": {
                      "data": {
                        "id": "swap_01J0M7C0Z9F8YX3GQH8E",
                        "external_reference": "buy-dip-btc-001",
                        "trade": {
                          "from": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "100.00"
                          },
                          "to": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto"
                          }
                        },
                        "when": {
                          "base": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto"
                          },
                          "quote": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat"
                          },
                          "drops_to": "50000.00"
                        },
                        "status": "active"
                      }
                    }
                  },
                  "completed-swap": {
                    "summary": "Swap completed after a successful trade execution; `trade.fees` and `trade.rate` reflect what was realized",
                    "value": {
                      "data": {
                        "id": "swap_01J0M7BMRWJTKBN0R0FY",
                        "external_reference": "buy-dip-btc-001",
                        "trade": {
                          "from": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "100.00"
                          },
                          "to": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto"
                          },
                          "fees": {
                            "trade": {
                              "symbol": "USD",
                              "name": "US Dollar",
                              "type": "fiat",
                              "amount": "0.50"
                            }
                          },
                          "rate": {
                            "base": {
                              "symbol": "BTC",
                              "name": "Bitcoin",
                              "type": "crypto"
                            },
                            "quote": {
                              "symbol": "USD",
                              "name": "US Dollar",
                              "type": "fiat"
                            },
                            "price": "50000.00"
                          }
                        },
                        "when": {
                          "base": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto"
                          },
                          "quote": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat"
                          },
                          "drops_to": "50000.00"
                        },
                        "status": "completed"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Price trigger swap not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/price-trigger-swaps/swap_01J0M7C0Z9F8YX3GQH8E\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/price-trigger-swaps/{price_trigger_swap_id}/cancel": {
      "post": {
        "operationId": "cancelPriceTriggerSwap",
        "summary": "Cancel price trigger swap",
        "tags": ["Price Trigger Swaps"],
        "description": "Cancels a price trigger swap that is still in `active` status.\n\nOnly swaps in `active` status can be cancelled. Swaps in `completed` or `cancelled` status are terminal and cannot be cancelled — those return `409 Conflict` with `code: price_trigger_swap_not_cancellable`.\n\nOn success, the swap's `status` becomes `cancelled` and `cancelled_reason` is populated with `code: user_request`. Subscribers to the `price_trigger_swap.cancelled` webhook receive a notification.",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "path",
            "name": "price_trigger_swap_id",
            "required": true,
            "schema": {
              "description": "ID of the price trigger swap to cancel (prefixed with `swap_`).",
              "type": "string"
            },
            "style": "simple"
          }
        ],
        "responses": {
          "204": {
            "description": "Cancelled. The response body is empty; re-fetch the swap via `GET /v1/accounts/{account_id}/price-trigger-swaps/{price_trigger_swap_id}` if you need the post-cancel state.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Unauthenticated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Price trigger swap not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Order can no longer be cancelled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceTriggerSwapNotCancellableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/price-trigger-swaps/swap_01J0M7C0Z9F8YX3GQH8E/cancel\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "destructiveHint": true,
          "idempotentHint": true
        }
      }
    },
    "/v1/accounts/{account_id}/onchain-quotes": {
      "get": {
        "tags": ["On-chain Swaps"],
        "description": "Lists onchain quotes for the authenticated user.",
        "operationId": "listOnchainQuotes",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque page token returned by a previous response's `next_page_token`. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of onchain quotes to return. Defaults to 50 if omitted. Maximum 200.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 50
            },
            "style": "form",
            "example": 20
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "On-chain quotes for the requested page.",
                      "type": "array",
                      "items": {
                        "description": "Full representation of an onchain quote.",
                        "type": "object",
                        "properties": {
                          "id": {
                            "description": "Unique identifier for this onchain quote.",
                            "type": "string"
                          },
                          "status": {
                            "description": "Current lifecycle status of the onchain quote.",
                            "type": "string",
                            "enum": ["offered", "executing", "executed", "expired", "failed", "pending"]
                          },
                          "expires_at": {
                            "$ref": "#/components/schemas/google.protobuf.Timestamp"
                          },
                          "from": {
                            "description": "Source asset and amount for the trade.",
                            "type": "object",
                            "properties": {
                              "symbol": {
                                "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
                                "type": "string"
                              },
                              "name": {
                                "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                "type": ["string", "null"]
                              },
                              "type": {
                                "description": "Classification of the asset.",
                                "type": "string",
                                "enum": ["fiat", "crypto", "xstock", "stablecoin"]
                              },
                              "amount": {
                                "description": "Decimal amount as a string to preserve precision.",
                                "type": "string"
                              }
                            }
                          },
                          "to": {
                            "description": "Destination asset and amount for the trade.",
                            "type": "object",
                            "properties": {
                              "symbol": {
                                "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
                                "type": "string"
                              },
                              "name": {
                                "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                                "type": ["string", "null"]
                              },
                              "type": {
                                "description": "Classification of the asset.",
                                "type": "string",
                                "enum": ["fiat", "crypto", "xstock", "stablecoin"]
                              },
                              "amount": {
                                "description": "Decimal amount as a string to preserve precision.",
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 64
                    }
                  }
                },
                "examples": {
                  "onchain-quotes": {
                    "summary": "Latest On-chain quotes for the authenticated user",
                    "value": {
                      "data": [
                        {
                          "id": "XQAAAAAAAAAAA3",
                          "status": "offered",
                          "expires_at": "2026-04-23T16:20:30Z",
                          "from": {
                            "symbol": "USDC",
                            "name": "USD Coin",
                            "type": "stablecoin",
                            "amount": "1853.40"
                          },
                          "to": {
                            "symbol": "TSLAx",
                            "name": "Tesla xStock",
                            "type": "xstock",
                            "amount": "10"
                          }
                        },
                        {
                          "id": "XQAAAAAAAAAAA2",
                          "status": "executed",
                          "expires_at": "2026-04-23T16:10:30Z",
                          "from": {
                            "symbol": "TSLAx",
                            "name": "Tesla xStock",
                            "type": "xstock",
                            "amount": "10"
                          },
                          "to": {
                            "symbol": "USDC",
                            "name": "USD Coin",
                            "type": "stablecoin",
                            "amount": "1853.40"
                          }
                        },
                        {
                          "id": "XQAAAAAAAAAAA1",
                          "status": "expired",
                          "expires_at": "2026-04-23T16:00:30Z",
                          "from": {
                            "symbol": "USDC",
                            "name": "USD Coin",
                            "type": "stablecoin",
                            "amount": "1853.40"
                          },
                          "to": {
                            "symbol": "TSLAx",
                            "name": "Tesla xStock",
                            "type": "xstock",
                            "amount": "10"
                          }
                        }
                      ],
                      "next_page_token": "AAZUbz9WQAAAAAAAACrUqPGCRjzHZvqDr8PUyYwbx41j4AuH"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemUnauthenticated"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemForbidden"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResourceExhausted"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemInternal"
                }
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemUnimplemented"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemUnavailable"
                }
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDeadlineExceeded"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "List on-chain quotes"
      },
      "post": {
        "tags": ["On-chain Swaps"],
        "description": "Creates a new wallet-funded onchain quote.\n\nThe amount field must appear on exactly one side (from or to).\nWhichever side carries the amount is the fixed side; the server\ncalculates the other. The source wallet is required because onchain quote\nexecution is submitted directly by the client on-chain.",
        "operationId": "createOnchainQuote",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to create a new wallet-funded onchain quote.\n\nExactly one of `from.amount` or `to.amount` must be provided to\nindicate which side of the trade is fixed. The server calculates\nthe other side. Requests that set both amounts or omit both are\nrejected with a 400 Bad Request.",
                "type": "object",
                "properties": {
                  "from": {
                    "description": "Source side of a create-onchain-quote request.",
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "description": "Asset ticker symbol (e.g. \"USDC\"). Required.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 10
                      },
                      "type": {
                        "description": "Classification of the asset. Required.",
                        "type": "string",
                        "enum": ["fiat", "crypto", "xstock", "stablecoin"]
                      },
                      "amount": {
                        "description": "Amount to spend, as a non-negative decimal string.\n\nMutually exclusive with `to.amount`. Exactly one of `from.amount` or\n`to.amount` must be provided; set this to fix the source side of the\ntrade and let the server calculate `to.amount`. Sending both or\nneither is rejected with a 400 Bad Request. Negative values are\nrejected with a 400 Bad Request.",
                        "type": "string",
                        "pattern": "^[0-9]+(\\.[0-9]+)?$",
                        "maxLength": 32
                      },
                      "wallet": {
                        "description": "Wallet used for wallet-funded onchain quote execution.",
                        "type": "object",
                        "properties": {
                          "address": {
                            "description": "Client-controlled EVM wallet that will submit the on-chain proxy transaction.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 64
                          },
                          "network": {
                            "description": "EVM network for this onchain quote.",
                            "type": "string",
                            "enum": ["ethereum"]
                          }
                        }
                      }
                    },
                    "required": ["wallet"]
                  },
                  "to": {
                    "description": "Destination side of a create-onchain-quote request.",
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "description": "Asset ticker symbol (e.g. \"TSLAx\"). Required.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 10
                      },
                      "type": {
                        "description": "Classification of the asset. Required.",
                        "type": "string",
                        "enum": ["fiat", "crypto", "xstock", "stablecoin"]
                      },
                      "amount": {
                        "description": "Amount to receive, as a non-negative decimal string.\n\nMutually exclusive with `from.amount`. Exactly one of `from.amount`\nor `to.amount` must be provided; set this to fix the destination\nside of the trade and let the server calculate `from.amount`.\nSending both or neither is rejected with a 400 Bad Request.\nNegative values are rejected with a 400 Bad Request.",
                        "type": "string",
                        "pattern": "^[0-9]+(\\.[0-9]+)?$",
                        "maxLength": 32
                      }
                    }
                  }
                },
                "required": ["from", "to"]
              },
              "examples": {
                "buy-xstock-with-fixed-usdc": {
                  "summary": "Spend a fixed amount of USDC to buy TSLAx",
                  "value": {
                    "from": {
                      "symbol": "USDC",
                      "type": "stablecoin",
                      "amount": "1853.40",
                      "wallet": {
                        "address": "0x8888...8888",
                        "network": "ethereum"
                      }
                    },
                    "to": {
                      "symbol": "TSLAx",
                      "type": "xstock"
                    }
                  }
                },
                "sell-xstock-for-fixed-usdc": {
                  "summary": "Sell TSLAx to receive a fixed amount of USDC",
                  "value": {
                    "from": {
                      "symbol": "TSLAx",
                      "type": "xstock",
                      "wallet": {
                        "address": "0x8888...8888",
                        "network": "ethereum"
                      }
                    },
                    "to": {
                      "symbol": "USDC",
                      "type": "stablecoin",
                      "amount": "1853.40"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Full representation of an onchain quote.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Unique identifier for this onchain quote.",
                          "type": "string"
                        },
                        "status": {
                          "description": "Current lifecycle status of the onchain quote.",
                          "type": "string",
                          "enum": ["offered", "executing", "executed", "expired", "failed", "pending"]
                        },
                        "expires_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        },
                        "from": {
                          "description": "Source asset and amount for the trade.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
                              "type": "string"
                            },
                            "name": {
                              "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                              "type": ["string", "null"]
                            },
                            "type": {
                              "description": "Classification of the asset.",
                              "type": "string",
                              "enum": ["fiat", "crypto", "xstock", "stablecoin"]
                            },
                            "amount": {
                              "description": "Decimal amount as a string to preserve precision.",
                              "type": "string"
                            }
                          }
                        },
                        "to": {
                          "description": "Destination asset and amount for the trade.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
                              "type": "string"
                            },
                            "name": {
                              "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                              "type": ["string", "null"]
                            },
                            "type": {
                              "description": "Classification of the asset.",
                              "type": "string",
                              "enum": ["fiat", "crypto", "xstock", "stablecoin"]
                            },
                            "amount": {
                              "description": "Decimal amount as a string to preserve precision.",
                              "type": "string"
                            }
                          }
                        },
                        "execution_details": {
                          "description": "Execution details for onchain quotes submitted directly by the client on-chain.",
                          "type": "object",
                          "properties": {
                            "chain_id": {
                              "description": "Chain ID as a base-10 string.",
                              "type": "string"
                            },
                            "proxy_address": {
                              "description": "KrakenAtomicSwapProxy address.",
                              "type": "string"
                            },
                            "proxy_swap_message": {
                              "description": "ABI-shaped proxy message for KrakenAtomicSwapProxy.",
                              "type": "object",
                              "properties": {
                                "atomic_message": {
                                  "description": "Backed atomic execution message.",
                                  "type": "object",
                                  "properties": {
                                    "quote_id": {
                                      "description": "On-chain quote ID from Backed's atomic message.",
                                      "type": "string"
                                    },
                                    "expiration": {
                                      "description": "Expiration as Unix seconds.",
                                      "type": "integer",
                                      "format": "int64"
                                    },
                                    "incoming_transfer": {
                                      "description": "ABI-shaped token transfer.",
                                      "type": "object",
                                      "properties": {
                                        "from": {
                                          "description": "Sender address.",
                                          "type": "string"
                                        },
                                        "to": {
                                          "description": "Recipient address.",
                                          "type": "string"
                                        },
                                        "token": {
                                          "description": "Token contract address.",
                                          "type": "string"
                                        },
                                        "amount": {
                                          "description": "Token amount in base units.",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "outgoing_transfer": {
                                      "description": "ABI-shaped token transfer.",
                                      "type": "object",
                                      "properties": {
                                        "from": {
                                          "description": "Sender address.",
                                          "type": "string"
                                        },
                                        "to": {
                                          "description": "Recipient address.",
                                          "type": "string"
                                        },
                                        "token": {
                                          "description": "Token contract address.",
                                          "type": "string"
                                        },
                                        "amount": {
                                          "description": "Token amount in base units.",
                                          "type": "string"
                                        }
                                      }
                                    }
                                  }
                                },
                                "atomic_signature": {
                                  "description": "Backed signature over the atomic message.",
                                  "type": "string"
                                },
                                "signature": {
                                  "description": "Kraken EIP-712 onchain quote authorization signature.",
                                  "type": "string"
                                },
                                "client_address": {
                                  "description": "Client-controlled EVM wallet authorized for this proxy execution.",
                                  "type": "string"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "buy-xstock-with-fixed-usdc": {
                    "summary": "Quote for spending a fixed amount of USDC to buy TSLAx",
                    "value": {
                      "data": {
                        "id": "XQAAAAAAAAAAA1",
                        "status": "offered",
                        "expires_at": "2026-04-23T16:00:30Z",
                        "from": {
                          "symbol": "USDC",
                          "name": "USD Coin",
                          "type": "stablecoin",
                          "amount": "1853.40"
                        },
                        "to": {
                          "symbol": "TSLAx",
                          "name": "Tesla xStock",
                          "type": "xstock",
                          "amount": "10"
                        },
                        "execution_details": {
                          "chain_id": "1",
                          "proxy_address": "0x1111...1111",
                          "proxy_swap_message": {
                            "atomic_message": {
                              "quote_id": "0x3333...3333",
                              "expiration": 1777034103,
                              "incoming_transfer": {
                                "from": "0x1111...1111",
                                "to": "0x4444...4444",
                                "token": "0x5555...5555",
                                "amount": "1853400000"
                              },
                              "outgoing_transfer": {
                                "from": "0x4444...4444",
                                "to": "0x1111...1111",
                                "token": "0x6666...6666",
                                "amount": "10000000000000000000"
                              }
                            },
                            "atomic_signature": "0xaaaa...aaaa",
                            "signature": "0x40e9...221c",
                            "client_address": "0x8888...8888"
                          }
                        }
                      }
                    }
                  },
                  "sell-xstock-for-fixed-usdc": {
                    "summary": "Quote for selling TSLAx to receive a fixed amount of USDC",
                    "value": {
                      "data": {
                        "id": "XQAAAAAAAAAAA2",
                        "status": "offered",
                        "expires_at": "2026-04-23T16:05:30Z",
                        "from": {
                          "symbol": "TSLAx",
                          "name": "Tesla xStock",
                          "type": "xstock",
                          "amount": "10"
                        },
                        "to": {
                          "symbol": "USDC",
                          "name": "USD Coin",
                          "type": "stablecoin",
                          "amount": "1853.40"
                        },
                        "execution_details": {
                          "chain_id": "1",
                          "proxy_address": "0x1111...1111",
                          "proxy_swap_message": {
                            "atomic_message": {
                              "quote_id": "0x7777...7777",
                              "expiration": 1777034403,
                              "incoming_transfer": {
                                "from": "0x1111...1111",
                                "to": "0x4444...4444",
                                "token": "0x6666...6666",
                                "amount": "10000000000000000000"
                              },
                              "outgoing_transfer": {
                                "from": "0x4444...4444",
                                "to": "0x1111...1111",
                                "token": "0x5555...5555",
                                "amount": "1853400000"
                              }
                            },
                            "atomic_signature": "0xbbbb...bbbb",
                            "signature": "0x51fa...701c",
                            "client_address": "0x8888...8888"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemUnauthenticated"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemForbidden"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResourceExhausted"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemInternal"
                }
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemUnimplemented"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Type for errors when using the Kraken2025 format.\n\nThis format follows `Problem Details for HTTP APIs` ([rfc7807]).\n\n[rfc7807]: https://datatracker.ietf.org/doc/html/rfc7807",
                  "type": "object",
                  "properties": {
                    "type": {
                      "description": "URL uniquely identifying the error type relative to an operation",
                      "type": "string",
                      "enum": [
                        "tag:kraken.com,2025:gateway/Connect",
                        "tag:kraken.com,2025:Unavailable",
                        "tag:kraken.com,2025:InsufficientLiquidity"
                      ]
                    },
                    "status": {
                      "description": "HTTP status (provided for convenience)",
                      "type": "integer",
                      "format": "uint16",
                      "minimum": 0
                    },
                    "title": {
                      "description": "Short human-readable summary",
                      "type": "string"
                    },
                    "detail": {
                      "description": "Help to solve the problem",
                      "type": ["string", "null"]
                    },
                    "instance": {
                      "description": "Link to debug data for this particular error",
                      "type": ["string", "null"]
                    },
                    "data": {
                      "description": "Custom data attached to this problem"
                    },
                    "source": {
                      "description": "Whether the service or gateway threw the error.",
                      "type": "string",
                      "enum": ["Gateway"]
                    }
                  },
                  "required": ["data", "source", "status", "title", "type"]
                }
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDeadlineExceeded"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Create on-chain quote",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          }
        ]
      }
    },
    "/v1/accounts/{account_id}/onchain-quotes/{quote_id}": {
      "get": {
        "tags": ["On-chain Swaps"],
        "description": "Retrieves the current state of a previously created onchain quote.",
        "operationId": "getOnchainQuote",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "path",
            "name": "quote_id",
            "required": true,
            "schema": {
              "description": "ID of the onchain quote to retrieve.",
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "style": "simple",
            "example": "XQAAAAAAAAAAA1"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Full representation of an onchain quote.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Unique identifier for this onchain quote.",
                          "type": "string"
                        },
                        "status": {
                          "description": "Current lifecycle status of the onchain quote.",
                          "type": "string",
                          "enum": ["offered", "executing", "executed", "expired", "failed", "pending"]
                        },
                        "expires_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        },
                        "from": {
                          "description": "Source asset and amount for the trade.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
                              "type": "string"
                            },
                            "name": {
                              "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                              "type": ["string", "null"]
                            },
                            "type": {
                              "description": "Classification of the asset.",
                              "type": "string",
                              "enum": ["fiat", "crypto", "xstock", "stablecoin"]
                            },
                            "amount": {
                              "description": "Decimal amount as a string to preserve precision.",
                              "type": "string"
                            }
                          }
                        },
                        "to": {
                          "description": "Destination asset and amount for the trade.",
                          "type": "object",
                          "properties": {
                            "symbol": {
                              "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
                              "type": "string"
                            },
                            "name": {
                              "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
                              "type": ["string", "null"]
                            },
                            "type": {
                              "description": "Classification of the asset.",
                              "type": "string",
                              "enum": ["fiat", "crypto", "xstock", "stablecoin"]
                            },
                            "amount": {
                              "description": "Decimal amount as a string to preserve precision.",
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "offered-quote": {
                    "summary": "Quote in `offered` status, awaiting on-chain submission",
                    "value": {
                      "data": {
                        "id": "XQAAAAAAAAAAA1",
                        "status": "offered",
                        "expires_at": "2026-04-23T16:00:30Z",
                        "from": {
                          "symbol": "USDC",
                          "name": "USD Coin",
                          "type": "stablecoin",
                          "amount": "1853.40"
                        },
                        "to": {
                          "symbol": "TSLAx",
                          "name": "Tesla xStock",
                          "type": "xstock",
                          "amount": "10"
                        }
                      }
                    }
                  },
                  "executed-quote": {
                    "summary": "Quote already executed on-chain — terminal state",
                    "value": {
                      "data": {
                        "id": "XQAAAAAAAAAAA1",
                        "status": "executed",
                        "expires_at": "2026-04-23T16:00:30Z",
                        "from": {
                          "symbol": "USDC",
                          "name": "USD Coin",
                          "type": "stablecoin",
                          "amount": "1853.40"
                        },
                        "to": {
                          "symbol": "TSLAx",
                          "name": "Tesla xStock",
                          "type": "xstock",
                          "amount": "10"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemUnauthenticated"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemForbidden"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemNotFound"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemResourceExhausted"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemInternal"
                }
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemUnimplemented"
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemUnavailable"
                }
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDeadlineExceeded"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Get on-chain quote"
      }
    },
    "/v1/ramp/buy/crypto": {
      "get": {
        "operationId": "getRampBuyCryptoAssets",
        "summary": "List Ramp Buy Cryptocurrency Assets",
        "tags": ["Ramp"],
        "description": "List cryptocurrency assets supported for Ramp buy transactions, including networks and withdrawal methods.\n",
        "parameters": [
          {
            "in": "query",
            "name": "country",
            "required": true,
            "description": "ISO 3166-1 alpha-2 country code. Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string",
              "maxLength": 2
            }
          },
          {
            "in": "query",
            "name": "subdivision",
            "required": false,
            "description": "ISO 3166-2 subdivision code suffix (e.g., `CA` for California when country is `US`). Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_token",
            "required": false,
            "description": "Opaque page token returned by a previous response. Omit to start from the beginning. When present, the token is scoped to this endpoint and the original country/subdivision where applicable, carries the page size, and causes any valid page_size value to be ignored.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Maximum number of results to return on the first page. Defaults to 50 if omitted; max 200.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "description": "Supported cryptocurrency assets for Ramp buy operations.",
                      "items": {
                        "$ref": "#/components/schemas/RampCryptoAsset"
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent if there are no more results.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 512
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": [
                      {
                        "symbol": "BTC",
                        "name": "Bitcoin",
                        "type": "crypto",
                        "market_cap_rank": 1,
                        "network": "Bitcoin",
                        "method": "Bitcoin",
                        "disabled_against": []
                      },
                      {
                        "symbol": "BTC",
                        "name": "Bitcoin",
                        "type": "crypto",
                        "wrapped_asset": "kBTC",
                        "market_cap_rank": 1,
                        "network": "Ink",
                        "method": "kBTC - Ink",
                        "disabled_against": []
                      },
                      {
                        "symbol": "ETH",
                        "name": "Ethereum",
                        "type": "crypto",
                        "market_cap_rank": 2,
                        "network": "Ethereum",
                        "method": "Ether",
                        "disabled_against": []
                      },
                      {
                        "symbol": "USDC",
                        "name": "USD Coin",
                        "type": "stablecoin",
                        "market_cap_rank": 6,
                        "network": "Ethereum",
                        "method": "USDC",
                        "disabled_against": [
                          {
                            "symbol": "GBP",
                            "type": "fiat"
                          }
                        ]
                      }
                    ],
                    "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                  }
                },
                "example": {
                  "data": [
                    {
                      "symbol": "BTC",
                      "name": "Bitcoin",
                      "type": "crypto",
                      "market_cap_rank": 1,
                      "network": "Bitcoin",
                      "method": "Bitcoin",
                      "disabled_against": []
                    },
                    {
                      "symbol": "BTC",
                      "name": "Bitcoin",
                      "type": "crypto",
                      "wrapped_asset": "kBTC",
                      "market_cap_rank": 1,
                      "network": "Ink",
                      "method": "kBTC - Ink",
                      "disabled_against": []
                    },
                    {
                      "symbol": "ETH",
                      "name": "Ethereum",
                      "type": "crypto",
                      "market_cap_rank": 2,
                      "network": "Ethereum",
                      "method": "Ether",
                      "disabled_against": []
                    },
                    {
                      "symbol": "USDC",
                      "name": "USD Coin",
                      "type": "stablecoin",
                      "market_cap_rank": 6,
                      "network": "Ethereum",
                      "method": "USDC",
                      "disabled_against": [
                        {
                          "symbol": "GBP",
                          "type": "fiat"
                        }
                      ]
                    }
                  ],
                  "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/ramp/buy/crypto?country=US&subdivision=CA&page_size=200\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/ramp/fiat-currencies": {
      "get": {
        "operationId": "getRampFiatCurrencies",
        "summary": "List Ramp Fiat Currencies",
        "tags": ["Ramp"],
        "description": "List fiat currencies supported for funding Ramp transactions.\n",
        "parameters": [
          {
            "in": "query",
            "name": "country",
            "required": true,
            "description": "ISO 3166-1 alpha-2 country code. Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string",
              "maxLength": 2
            }
          },
          {
            "in": "query",
            "name": "subdivision",
            "required": false,
            "description": "ISO 3166-2 subdivision code suffix (e.g., `CA` for California when country is `US`). Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_token",
            "required": false,
            "description": "Opaque page token returned by a previous response. Omit to start from the beginning. When present, the token is scoped to this endpoint and the original country/subdivision where applicable, carries the page size, and causes any valid page_size value to be ignored.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Maximum number of results to return on the first page. Defaults to 50 if omitted; max 200.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "description": "Fiat currencies that can be used for Ramp deposits.",
                      "items": {
                        "$ref": "#/components/schemas/RampFiatCurrency"
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent if there are no more results.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 512
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": [
                      {
                        "symbol": "USD",
                        "name": "US Dollar",
                        "type": "fiat"
                      },
                      {
                        "symbol": "EUR",
                        "name": "Euro",
                        "type": "fiat"
                      },
                      {
                        "symbol": "GBP",
                        "name": "British Pound",
                        "type": "fiat"
                      },
                      {
                        "symbol": "CAD",
                        "name": "Canadian Dollar",
                        "type": "fiat"
                      }
                    ],
                    "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                  }
                },
                "example": {
                  "data": [
                    {
                      "symbol": "USD",
                      "name": "US Dollar",
                      "type": "fiat"
                    },
                    {
                      "symbol": "EUR",
                      "name": "Euro",
                      "type": "fiat"
                    },
                    {
                      "symbol": "GBP",
                      "name": "British Pound",
                      "type": "fiat"
                    },
                    {
                      "symbol": "CAD",
                      "name": "Canadian Dollar",
                      "type": "fiat"
                    }
                  ],
                  "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/ramp/fiat-currencies?country=US&subdivision=CA&page_size=200\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/ramp/payment-methods": {
      "get": {
        "operationId": "getRampPaymentMethods",
        "summary": "List Ramp Payment Methods",
        "tags": ["Ramp"],
        "description": "List fiat funding methods supported for Ramp deposits.\n",
        "parameters": [
          {
            "in": "query",
            "name": "country",
            "required": true,
            "description": "ISO 3166-1 alpha-2 country code. Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string",
              "maxLength": 2
            }
          },
          {
            "in": "query",
            "name": "subdivision",
            "required": false,
            "description": "ISO 3166-2 subdivision code suffix (e.g., `CA` for California when country is `US`). Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page_token",
            "required": false,
            "description": "Opaque page token returned by a previous response. Omit to start from the beginning. When present, the token is scoped to this endpoint and the original country/subdivision where applicable, carries the page size, and causes any valid page_size value to be ignored.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Maximum number of results to return on the first page. Defaults to 50 if omitted; max 200.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "description": "Supported funding methods for Ramp operations.",
                      "items": {
                        "$ref": "#/components/schemas/RampPaymentMethod"
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent if there are no more results.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 512
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": [
                      {
                        "method": "credit_card"
                      },
                      {
                        "method": "card_visa"
                      },
                      {
                        "method": "card_mastercard"
                      },
                      {
                        "method": "ach"
                      },
                      {
                        "method": "sepa_instant"
                      }
                    ],
                    "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                  }
                },
                "example": {
                  "data": [
                    {
                      "method": "credit_card"
                    },
                    {
                      "method": "card_visa"
                    },
                    {
                      "method": "card_mastercard"
                    },
                    {
                      "method": "ach"
                    },
                    {
                      "method": "sepa_instant"
                    }
                  ],
                  "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/ramp/payment-methods?country=US&subdivision=CA&page_size=200\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/ramp/countries": {
      "get": {
        "operationId": "getRampCountries",
        "summary": "List Ramp Countries",
        "tags": ["Ramp"],
        "description": "List countries and subdivision groups supported for Ramp deposits.\n",
        "parameters": [
          {
            "in": "query",
            "name": "page_token",
            "required": false,
            "description": "Opaque page token returned by a previous response. Omit to start from the beginning. When present, the token is scoped to this endpoint and the original country/subdivision where applicable, carries the page size, and causes any valid page_size value to be ignored.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "required": false,
            "description": "Maximum number of results to return on the first page. Defaults to 50 if omitted; max 200.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "description": "Countries and sub-regions that support Ramp transactions.",
                      "items": {
                        "$ref": "#/components/schemas/RampCountry"
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page of results. Absent if there are no more results.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 512
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": [
                      {
                        "country": "GB"
                      },
                      {
                        "country": "DE"
                      },
                      {
                        "country": "US",
                        "subdivisions": ["CA", "NY", "TX", "FL", "WA"]
                      },
                      {
                        "country": "CA",
                        "subdivisions": ["ON", "BC", "QC"]
                      }
                    ],
                    "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                  }
                },
                "example": {
                  "data": [
                    {
                      "country": "GB"
                    },
                    {
                      "country": "DE"
                    },
                    {
                      "country": "US",
                      "subdivisions": ["CA", "NY", "TX", "FL", "WA"]
                    },
                    {
                      "country": "CA",
                      "subdivisions": ["ON", "BC", "QC"]
                    }
                  ],
                  "next_page_token": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/ramp/countries?page_size=200\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/ramp/limits": {
      "get": {
        "operationId": "getRampLimits",
        "summary": "Get Ramp Limits",
        "tags": ["Ramp"],
        "description": "Retrieve combined min/max limits for a Ramp transaction configuration.\n",
        "parameters": [
          {
            "in": "query",
            "name": "from_symbol",
            "required": true,
            "description": "Source asset ticker symbol (e.g. `USD`) — the asset the user pays with. Use `GET /v1/ramp/fiat-currencies` to discover supported source currencies.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssetSymbol"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "from_type",
            "required": false,
            "description": "Classification of the source asset. Pair with `from_symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `fiat`. Only fiat sources are currently supported (on-ramp).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"],
              "default": "fiat"
            }
          },
          {
            "in": "query",
            "name": "from_method",
            "required": true,
            "description": "Funding method used for the source side. Use `GET /v1/ramp/payment-methods` to discover supported payment methods.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to_symbol",
            "required": true,
            "description": "Destination asset ticker symbol (e.g. `BTC`) — the asset the user receives. Use `GET /v1/ramp/buy/crypto` to discover supported destination assets.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssetSymbol"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "to_type",
            "required": false,
            "description": "Classification of the destination asset. Pair with `to_symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `crypto`. Only crypto and stablecoin destinations are currently supported (on-ramp).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"],
              "default": "crypto"
            }
          },
          {
            "in": "query",
            "name": "to_method",
            "required": true,
            "description": "Withdrawal method for the destination asset. Use `GET /v1/ramp/buy/crypto` to discover available withdrawal methods for each asset.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": true,
            "description": "ISO 3166-1 alpha-2 country code. Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string",
              "maxLength": 2
            }
          },
          {
            "in": "query",
            "name": "subdivision",
            "required": false,
            "description": "ISO 3166-2 subdivision code suffix (e.g., `CA` for California when country is `US`). Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "limits": {
                          "type": "object",
                          "description": "Transaction limits for the source and destination sides.",
                          "properties": {
                            "from": {
                              "$ref": "#/components/schemas/RampWireTransactionRange",
                              "description": "Min/max transaction range for the source (pay) side."
                            },
                            "to": {
                              "$ref": "#/components/schemas/RampWireTransactionRange",
                              "description": "Min/max transaction range for the destination (receive) side."
                            }
                          },
                          "required": ["from", "to"]
                        },
                        "final_combined": {
                          "type": "object",
                          "description": "Combined limits converted to both source and destination assets.",
                          "properties": {
                            "from": {
                              "description": "Limits denominated in the source asset.",
                              "$ref": "#/components/schemas/RampWireTransactionRange"
                            },
                            "to": {
                              "description": "Limits denominated in the destination asset.",
                              "$ref": "#/components/schemas/RampWireTransactionRange"
                            }
                          },
                          "required": ["from", "to"]
                        }
                      },
                      "required": ["limits", "final_combined"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "limits": {
                        "from": {
                          "minimum": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "20.00"
                          },
                          "maximum": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "5000.00"
                          }
                        },
                        "to": {
                          "minimum": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto",
                            "amount": "0.00010000"
                          },
                          "maximum": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto",
                            "amount": "0.50000000"
                          }
                        }
                      },
                      "final_combined": {
                        "from": {
                          "minimum": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "20.00"
                          },
                          "maximum": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "5000.00"
                          }
                        },
                        "to": {
                          "minimum": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto",
                            "amount": "0.00031746"
                          },
                          "maximum": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto",
                            "amount": "0.07936507"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "data": {
                    "limits": {
                      "from": {
                        "minimum": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "20.00"
                        },
                        "maximum": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "5000.00"
                        }
                      },
                      "to": {
                        "minimum": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.00010000"
                        },
                        "maximum": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.50000000"
                        }
                      }
                    },
                    "final_combined": {
                      "from": {
                        "minimum": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "20.00"
                        },
                        "maximum": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "5000.00"
                        }
                      },
                      "to": {
                        "minimum": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.00031746"
                        },
                        "maximum": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.07936507"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/ramp/limits?from_symbol=USD&from_type=fiat&from_method=credit_card&to_symbol=BTC&to_type=crypto&to_method=Bitcoin&country=GB\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/ramp/quotes/prospective": {
      "get": {
        "operationId": "getRampProspectiveQuote",
        "summary": "Get Ramp Prospective Quote",
        "tags": ["Ramp"],
        "description": "Retrieve a prospective quote for a Ramp transaction without reserving liquidity.\nUse this to preview spend/receive amounts before creating a checkout URL.\n",
        "parameters": [
          {
            "in": "query",
            "name": "from_symbol",
            "required": true,
            "description": "Source asset ticker symbol (e.g. `USD`) — the asset the user pays with. Use `GET /v1/ramp/fiat-currencies` to discover supported source currencies.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssetSymbol"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "from_type",
            "required": false,
            "description": "Classification of the source asset. Pair with `from_symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `fiat`. Only fiat sources are currently supported (on-ramp).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"],
              "default": "fiat"
            }
          },
          {
            "in": "query",
            "name": "from_method",
            "required": true,
            "description": "Funding method used for the source side. Use `GET /v1/ramp/payment-methods` to discover supported payment methods.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from_amount",
            "required": true,
            "description": "Amount to spend, denominated in the source asset, as a decimal string.",
            "schema": {
              "$ref": "#/components/schemas/BigDecimal"
            }
          },
          {
            "in": "query",
            "name": "to_symbol",
            "required": true,
            "description": "Destination asset ticker symbol (e.g. `BTC`) — the asset the user receives. Use `GET /v1/ramp/buy/crypto` to discover supported destination assets.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssetSymbol"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "to_type",
            "required": false,
            "description": "Classification of the destination asset. Pair with `to_symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `crypto`. Only crypto and stablecoin destinations are currently supported (on-ramp).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"],
              "default": "crypto"
            }
          },
          {
            "in": "query",
            "name": "to_method",
            "required": true,
            "description": "Withdrawal method for the destination asset. Use `GET /v1/ramp/buy/crypto` to discover available withdrawal methods for each asset.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": true,
            "description": "ISO 3166-1 alpha-2 country code. Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string",
              "maxLength": 2
            }
          },
          {
            "in": "query",
            "name": "subdivision",
            "required": false,
            "description": "ISO 3166-2 subdivision code suffix (e.g., `CA` for California when country is `US`). Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "affiliate_fee_bps",
            "required": false,
            "description": "Affiliate fee in basis points to attribute to the partner (0-10000 where 100 = 1%). This fee is additive to the platform fee, increasing the total fee charged to the user. The resulting affiliate_fee in the response reflects the partner's portion of the total fee.",
            "schema": {
              "$ref": "#/components/schemas/BasisPoints"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "from": {
                          "description": "Breakdown of the source side — the total the user pays, inclusive of fees.",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/RampAssetDetails"
                            }
                          ]
                        },
                        "to": {
                          "description": "Breakdown of the destination side — the total the user receives, net of fees.",
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/RampAssetDetails"
                            }
                          ]
                        },
                        "unit_price": {
                          "$ref": "#/components/schemas/RampUnitPrice"
                        }
                      },
                      "required": ["from", "to", "unit_price"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "from": {
                        "asset": {
                          "symbol": "USD",
                          "type": "fiat",
                          "name": "US Dollar"
                        },
                        "total": "1015.00",
                        "subtotal": "1000.00",
                        "fee": "10.00",
                        "deposit_fee": "5.00",
                        "affiliate_fee": "2.50",
                        "withdrawal_fee": null
                      },
                      "to": {
                        "asset": {
                          "symbol": "BTC",
                          "type": "crypto",
                          "name": "Bitcoin"
                        },
                        "total": "0.01587302",
                        "subtotal": "0.01587302",
                        "fee": null,
                        "deposit_fee": null,
                        "affiliate_fee": null,
                        "withdrawal_fee": "0.00010000"
                      },
                      "unit_price": {
                        "asset": {
                          "symbol": "BTC",
                          "type": "crypto",
                          "name": "Bitcoin"
                        },
                        "denomination_asset": {
                          "symbol": "USD",
                          "type": "fiat",
                          "name": "US Dollar"
                        },
                        "unit_price": "63000.00"
                      }
                    }
                  }
                },
                "example": {
                  "data": {
                    "from": {
                      "asset": {
                        "symbol": "USD",
                        "type": "fiat",
                        "name": "US Dollar"
                      },
                      "total": "1015.00",
                      "subtotal": "1000.00",
                      "fee": "10.00",
                      "deposit_fee": "5.00",
                      "affiliate_fee": "2.50",
                      "withdrawal_fee": null
                    },
                    "to": {
                      "asset": {
                        "symbol": "BTC",
                        "type": "crypto",
                        "name": "Bitcoin"
                      },
                      "total": "0.01587302",
                      "subtotal": "0.01587302",
                      "fee": null,
                      "deposit_fee": null,
                      "affiliate_fee": null,
                      "withdrawal_fee": "0.00010000"
                    },
                    "unit_price": {
                      "asset": {
                        "symbol": "BTC",
                        "type": "crypto",
                        "name": "Bitcoin"
                      },
                      "denomination_asset": {
                        "symbol": "USD",
                        "type": "fiat",
                        "name": "US Dollar"
                      },
                      "unit_price": "63000.00"
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/ramp/quotes/prospective?from_symbol=USD&from_type=fiat&from_method=credit_card&from_amount=1000.00&to_symbol=BTC&to_type=crypto&to_method=Bitcoin&country=GB&affiliate_fee_bps=250\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/ramp/checkout": {
      "get": {
        "operationId": "getRampCheckout",
        "summary": "Get Ramp Checkout URL",
        "tags": ["Ramp"],
        "description": "Generate a hosted Ramp checkout URL for the provided transaction configuration.\nThe response echoes the request parameters so the Ramp partner can confirm what\nwas submitted.\n",
        "parameters": [
          {
            "in": "query",
            "name": "from_symbol",
            "required": true,
            "description": "Source asset ticker symbol (e.g. `USD`) — the asset the user pays with. Use `GET /v1/ramp/fiat-currencies` to discover supported source currencies.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssetSymbol"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "from_type",
            "required": false,
            "description": "Classification of the source asset. Pair with `from_symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `fiat`. Only fiat sources are currently supported (on-ramp).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"],
              "default": "fiat"
            }
          },
          {
            "in": "query",
            "name": "from_method",
            "required": true,
            "description": "Funding method used for the source side. Use `GET /v1/ramp/payment-methods` to discover supported payment methods.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from_amount",
            "required": true,
            "description": "Amount to spend, denominated in the source asset, as a decimal string.",
            "schema": {
              "$ref": "#/components/schemas/BigDecimal"
            }
          },
          {
            "in": "query",
            "name": "to_symbol",
            "required": true,
            "description": "Destination asset ticker symbol (e.g. `BTC`) — the asset the user receives. Use `GET /v1/ramp/buy/crypto` to discover supported destination assets.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/AssetSymbol"
                }
              ]
            }
          },
          {
            "in": "query",
            "name": "to_type",
            "required": false,
            "description": "Classification of the destination asset. Pair with `to_symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `crypto`. Only crypto and stablecoin destinations are currently supported (on-ramp).",
            "schema": {
              "type": "string",
              "enum": ["fiat", "crypto", "stablecoin", "xstock"],
              "default": "crypto"
            }
          },
          {
            "in": "query",
            "name": "to_method",
            "required": true,
            "description": "Withdrawal method for the destination asset. Use `GET /v1/ramp/buy/crypto` to discover available withdrawal methods for each asset.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to_network",
            "required": false,
            "description": "Optional withdrawal network identifier. Use `GET /v1/ramp/buy/crypto` to discover available networks for each destination asset.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to_address",
            "required": false,
            "description": "Optional destination wallet address for the crypto withdrawal.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to_memo",
            "required": false,
            "description": "Optional memo/tag/note for the crypto withdrawal (used for certain assets).",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "affiliate_fee_bps",
            "description": "Affiliate fee in basis points to attribute to the partner (0-10000 where 100 = 1%). This fee is additive to the platform fee, increasing the total fee charged to the user. The affiliate_fee in webhook payloads reflects the partner's portion of the total fee for transactions originating from this checkout.",
            "schema": {
              "$ref": "#/components/schemas/BasisPoints"
            }
          },
          {
            "in": "query",
            "name": "country",
            "required": true,
            "description": "ISO 3166-1 alpha-2 country code. Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string",
              "maxLength": 2
            }
          },
          {
            "in": "query",
            "name": "subdivision",
            "required": false,
            "description": "ISO 3166-2 subdivision code suffix (e.g., `CA` for California when country is `US`). Use `GET /v1/ramp/countries` to discover supported values.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "redirect_url",
            "description": "URL to redirect the user after completing checkout successfully.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          },
          {
            "in": "query",
            "name": "failure_url",
            "description": "URL to redirect the user after a failed checkout.",
            "schema": {
              "type": "string",
              "format": "uri"
            }
          },
          {
            "in": "query",
            "name": "external_user_id",
            "description": "Optional partner-supplied user identifier.",
            "schema": {
              "type": "string",
              "maxLength": 64
            }
          },
          {
            "in": "query",
            "name": "external_partner_id",
            "description": "Optional partner-supplied partner identifier.",
            "schema": {
              "type": "string",
              "maxLength": 64
            }
          },
          {
            "in": "query",
            "name": "external_transaction_id",
            "description": "Optional partner transaction identifier.",
            "schema": {
              "type": "string",
              "maxLength": 64
            }
          },
          {
            "in": "query",
            "name": "external_metadata",
            "description": "Optional metadata to store alongside the checkout.",
            "schema": {
              "type": "string",
              "maxLength": 1000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "checkout_url": {
                          "type": "string",
                          "format": "uri",
                          "description": "Hosted checkout URL."
                        },
                        "request_data": {
                          "type": "object",
                          "description": "Original request payload for client confirmation. `from.type` and `to.type` are always populated, resolved against the asset catalog.",
                          "properties": {
                            "from": {
                              "description": "Echo of the source (pay) side of the checkout.",
                              "allOf": [
                                {
                                  "$ref": "#/components/schemas/RampCheckoutFrom"
                                }
                              ]
                            },
                            "to": {
                              "description": "Echo of the destination (receive) side of the checkout.",
                              "allOf": [
                                {
                                  "$ref": "#/components/schemas/RampCheckoutTo"
                                }
                              ]
                            },
                            "affiliate_fee_bps": {
                              "description": "Affiliate fee in basis points (0-10000 where 100 = 1%).",
                              "type": ["string", "null"],
                              "format": "bps",
                              "example": "250",
                              "pattern": "^\\d{1,5}$"
                            },
                            "country": {
                              "description": "ISO 3166-1 alpha-2 country code",
                              "type": ["string", "null"],
                              "maxLength": 2
                            },
                            "subdivision": {
                              "description": "ISO 3166-2 subdivision code suffix (e.g., CA for California when country is US)",
                              "type": ["string", "null"]
                            },
                            "redirect_url": {
                              "description": "URL where the ramp provider should redirect the user after successful checkout",
                              "type": ["string", "null"],
                              "format": "uri"
                            },
                            "failure_url": {
                              "description": "URL where the ramp provider should redirect the user after failed checkout",
                              "type": ["string", "null"],
                              "format": "uri"
                            },
                            "external_user_id": {
                              "description": "Partner-provided user identifier (max 64 characters)",
                              "type": ["string", "null"],
                              "maxLength": 64
                            },
                            "external_partner_id": {
                              "description": "Partner-provided partner identifier (max 64 characters)",
                              "type": ["string", "null"],
                              "maxLength": 64
                            },
                            "external_transaction_id": {
                              "description": "Partner-provided transaction identifier (max 64 characters)",
                              "type": ["string", "null"],
                              "maxLength": 64
                            },
                            "external_metadata": {
                              "description": "Additional partner-provided metadata (max 1000 characters)",
                              "type": ["string", "null"],
                              "maxLength": 1000
                            }
                          },
                          "required": ["from", "to", "country"]
                        }
                      },
                      "required": ["checkout_url", "request_data"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "checkout_url": "https://ramp.kraken.com/checkout?fiat=USD&amount=100.00&crypto=BTC&payment_method=credit_card&method=Bitcoin",
                      "request_data": {
                        "from": {
                          "symbol": "USD",
                          "type": "fiat",
                          "method": "credit_card",
                          "amount": "100.00"
                        },
                        "to": {
                          "symbol": "BTC",
                          "type": "crypto",
                          "method": "Bitcoin",
                          "network": "Bitcoin",
                          "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                          "memo": "123456"
                        },
                        "affiliate_fee_bps": "250",
                        "country": "US",
                        "subdivision": "CA",
                        "redirect_url": "https://example.com/checkout/success",
                        "failure_url": "https://example.com/checkout/failure",
                        "external_user_id": "user_01J0M7C0Z9F8YX3GQH8E",
                        "external_partner_id": null,
                        "external_transaction_id": "INV-2026-04-0042",
                        "external_metadata": "{\"order_id\":\"order_12345\"}"
                      }
                    }
                  }
                },
                "example": {
                  "data": {
                    "checkout_url": "https://ramp.kraken.com/checkout?fiat=USD&amount=100.00&crypto=BTC&payment_method=credit_card&method=Bitcoin",
                    "request_data": {
                      "from": {
                        "symbol": "USD",
                        "type": "fiat",
                        "method": "credit_card",
                        "amount": "100.00"
                      },
                      "to": {
                        "symbol": "BTC",
                        "type": "crypto",
                        "method": "Bitcoin",
                        "network": "Bitcoin",
                        "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                        "memo": "123456"
                      },
                      "affiliate_fee_bps": "250",
                      "country": "US",
                      "subdivision": "CA",
                      "redirect_url": "https://example.com/checkout/success",
                      "failure_url": "https://example.com/checkout/failure",
                      "external_user_id": "user_01J0M7C0Z9F8YX3GQH8E",
                      "external_partner_id": null,
                      "external_transaction_id": "INV-2026-04-0042",
                      "external_metadata": "{\"order_id\":\"order_12345\"}"
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/ramp/checkout?from_symbol=USD&from_type=fiat&from_method=credit_card&from_amount=100.00&to_symbol=BTC&to_type=crypto&to_method=Bitcoin&affiliate_fee_bps=250&country=US&subdivision=CA&redirect_url=https%3A%2F%2Fexample.com%2Fcheckout%2Fsuccess&failure_url=https%3A%2F%2Fexample.com%2Fcheckout%2Ffailure&external_user_id=user_01J0M7C0Z9F8YX3GQH8E&external_transaction_id=INV-2026-04-0042\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/ramp/checkouts": {
      "post": {
        "tags": ["Ramp"],
        "description": "Creates a Ramp checkout for a selected user and returns the widget redirect\nURL with the checkout UUID in the fragment. No access token is minted here;\nthe widget mints it via the bootstrap call (`BootstrapRampCheckout`). The\nURL must still be treated as sensitive — the UUID is a capability handle.",
        "operationId": "createRampCheckoutSession",
        "parameters": [
          {
            "in": "path",
            "name": "user_id",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 14,
              "maxLength": 42
            },
            "x-selected-account": true,
            "style": "simple",
            "description": "ID of the user the checkout acts on behalf of. This is the user's IIBAN-derived public identifier.",
            "example": "AA23N84GGQN4WE6I"
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "style": "simple",
            "description": "Client-generated key for safe retries. Sent as the `Idempotency-Key` HTTP header.",
            "example": "550e8400-e29b-41d4-a716-446655440000"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to create a token-bound Ramp checkout session.\n\nThe `from`/`to` pairing determines the Ramp direction. Only on-ramp\n(`from` fiat, `to` crypto or stablecoin) is currently supported; other\npairings are rejected with `400 BadRequest`.",
                "type": "object",
                "properties": {
                  "from": {
                    "description": "Source side of the checkout — the asset the user pays with.",
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "description": "Asset ticker symbol (e.g. \"USD\"). Required. Use `GET /v1/ramp/fiat-currencies` to discover supported source currencies.",
                        "type": "string",
                        "minLength": 3,
                        "maxLength": 16
                      },
                      "type": {
                        "description": "Classification of the asset. Pair with `symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `fiat`. Only fiat sources are currently supported (on-ramp).",
                        "type": "string",
                        "enum": ["fiat", "crypto", "xstock", "stablecoin", "equity"]
                      },
                      "method": {
                        "description": "Funding method used for the source side. Required. Use `GET /v1/ramp/payment-methods` to discover supported payment methods.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "amount": {
                        "description": "Amount to spend, denominated in the source asset, as a decimal string. Required.",
                        "type": "string",
                        "pattern": "^[0-9]+(\\.[0-9]+)?$",
                        "minLength": 1,
                        "maxLength": 64
                      }
                    }
                  },
                  "to": {
                    "description": "Destination side of the checkout — the asset the user receives.",
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "description": "Asset ticker symbol (e.g. \"BTC\"). Required. Use `GET /v1/ramp/buy/crypto` to discover supported destination assets.",
                        "type": "string",
                        "minLength": 3,
                        "maxLength": 16
                      },
                      "type": {
                        "description": "Classification of the asset. Pair with `symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `crypto`. Only crypto and stablecoin destinations are currently supported (on-ramp).",
                        "type": "string",
                        "enum": ["fiat", "crypto", "xstock", "stablecoin", "equity"]
                      },
                      "method": {
                        "description": "Withdrawal method for the destination asset. Required. Use `GET /v1/ramp/buy/crypto` to discover available withdrawal methods for each asset.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "network": {
                        "description": "Optional withdrawal network identifier. Use `GET /v1/ramp/buy/crypto` to discover available networks for each destination asset.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 128
                      },
                      "address": {
                        "description": "Optional destination wallet address for the crypto withdrawal.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 512
                      },
                      "memo": {
                        "description": "Optional memo/tag/note for the crypto withdrawal (used for certain assets).",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 256
                      }
                    }
                  },
                  "affiliate_fee_bps": {
                    "description": "Affiliate fee in basis points to attribute to the partner (0-10000 where 100 = 1%).",
                    "type": "string",
                    "pattern": "^(10000|[0-9]{1,4})$",
                    "minLength": 1,
                    "maxLength": 5
                  },
                  "country": {
                    "description": "ISO 3166-1 alpha-2 country code. Use `GET /v1/ramp/countries` to discover supported values.",
                    "type": "string",
                    "pattern": "^[A-Za-z]{2}$",
                    "minLength": 2,
                    "maxLength": 2
                  },
                  "subdivision": {
                    "description": "ISO 3166-2 subdivision code suffix (e.g., `CA` for California when country is `US`). Use `GET /v1/ramp/countries` to discover supported values.",
                    "type": "string",
                    "pattern": "^[A-Za-z0-9-]+$",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "redirect_url": {
                    "description": "URL to redirect the user after completing checkout successfully.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "failure_url": {
                    "description": "URL to redirect the user after a failed checkout.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255
                  },
                  "external_user_id": {
                    "description": "Optional partner-supplied user identifier.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "external_partner_id": {
                    "description": "Optional partner-supplied partner identifier.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "external_transaction_id": {
                    "description": "Optional partner transaction identifier.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64
                  },
                  "external_metadata": {
                    "description": "Optional metadata to store alongside the checkout.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 1000
                  }
                },
                "required": ["from", "to"]
              },
              "examples": {
                "createCheckout": {
                  "summary": "Create hosted checkout",
                  "value": {
                    "from": {
                      "symbol": "USD",
                      "type": "fiat",
                      "method": "credit_card",
                      "amount": "100.00"
                    },
                    "to": {
                      "symbol": "BTC",
                      "type": "crypto",
                      "method": "Bitcoin",
                      "network": "Bitcoin",
                      "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                      "memo": "123456"
                    },
                    "affiliate_fee_bps": "250",
                    "country": "US",
                    "subdivision": "CA",
                    "redirect_url": "https://example.com/checkout/success",
                    "failure_url": "https://example.com/checkout/failure",
                    "external_user_id": "user_01J0M7C0Z9F8YX3GQH8E",
                    "external_partner_id": "partner_456",
                    "external_transaction_id": "INV-2026-04-0042",
                    "external_metadata": "{\"order_id\":\"order_12345\"}"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Created checkout session details.",
                      "type": "object",
                      "properties": {
                        "checkout_id": {
                          "description": "Public checkout session identifier.",
                          "type": "string",
                          "minLength": 36,
                          "maxLength": 36
                        },
                        "checkout_url": {
                          "description": "Widget redirect URL with the checkout UUID in the fragment. No access token\nis present; the widget mints one via the bootstrap call. The UUID is a\ncapability handle, so the URL is still sensitive.",
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 2048
                        },
                        "expires_in": {
                          "description": "Checkout URL validity window, in seconds — how long the partner has to\nredirect the user before the handle should be considered stale. This is the\ncreation-to-bootstrap window, not a token lifetime; the token TTL starts at\nbootstrap and is reported there.",
                          "type": "integer",
                          "format": "int64"
                        },
                        "request_data": {
                          "description": "Original request payload for client confirmation.",
                          "type": "object",
                          "properties": {
                            "from": {
                              "description": "Echo of the source (pay) side of the checkout.",
                              "type": "object",
                              "properties": {
                                "symbol": {
                                  "description": "Asset ticker symbol (e.g. \"USD\"). Required. Use `GET /v1/ramp/fiat-currencies` to discover supported source currencies.",
                                  "type": "string",
                                  "minLength": 3,
                                  "maxLength": 16
                                },
                                "type": {
                                  "description": "Classification of the asset. Pair with `symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `fiat`. Only fiat sources are currently supported (on-ramp).",
                                  "type": "string",
                                  "enum": ["fiat", "crypto", "xstock", "stablecoin", "equity"]
                                },
                                "method": {
                                  "description": "Funding method used for the source side. Required. Use `GET /v1/ramp/payment-methods` to discover supported payment methods.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 128
                                },
                                "amount": {
                                  "description": "Amount to spend, denominated in the source asset, as a decimal string. Required.",
                                  "type": "string",
                                  "pattern": "^[0-9]+(\\.[0-9]+)?$",
                                  "minLength": 1,
                                  "maxLength": 64
                                }
                              }
                            },
                            "to": {
                              "description": "Echo of the destination (receive) side of the checkout.",
                              "type": "object",
                              "properties": {
                                "symbol": {
                                  "description": "Asset ticker symbol (e.g. \"BTC\"). Required. Use `GET /v1/ramp/buy/crypto` to discover supported destination assets.",
                                  "type": "string",
                                  "minLength": 3,
                                  "maxLength": 16
                                },
                                "type": {
                                  "description": "Classification of the asset. Pair with `symbol` to disambiguate when the same ticker exists across asset classes (e.g. `USDC` as `stablecoin` vs `crypto`). Defaults to `crypto`. Only crypto and stablecoin destinations are currently supported (on-ramp).",
                                  "type": "string",
                                  "enum": ["fiat", "crypto", "xstock", "stablecoin", "equity"]
                                },
                                "method": {
                                  "description": "Withdrawal method for the destination asset. Required. Use `GET /v1/ramp/buy/crypto` to discover available withdrawal methods for each asset.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 128
                                },
                                "network": {
                                  "description": "Optional withdrawal network identifier. Use `GET /v1/ramp/buy/crypto` to discover available networks for each destination asset.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 128
                                },
                                "address": {
                                  "description": "Optional destination wallet address for the crypto withdrawal.",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 512
                                },
                                "memo": {
                                  "description": "Optional memo/tag/note for the crypto withdrawal (used for certain assets).",
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 256
                                }
                              }
                            },
                            "affiliate_fee_bps": {
                              "description": "Affiliate fee in basis points (0-10000 where 100 = 1%).",
                              "type": "string",
                              "pattern": "^(10000|[0-9]{1,4})$",
                              "minLength": 1,
                              "maxLength": 5
                            },
                            "country": {
                              "description": "ISO 3166-1 alpha-2 country code",
                              "type": "string",
                              "pattern": "^[A-Za-z]{2}$",
                              "minLength": 2,
                              "maxLength": 2
                            },
                            "subdivision": {
                              "description": "ISO 3166-2 subdivision code suffix (e.g., CA for California when country is US)",
                              "type": "string",
                              "pattern": "^[A-Za-z0-9-]+$",
                              "minLength": 1,
                              "maxLength": 64
                            },
                            "redirect_url": {
                              "description": "URL where the ramp provider should redirect the user after successful checkout",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 255
                            },
                            "failure_url": {
                              "description": "URL where the ramp provider should redirect the user after failed checkout",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 255
                            },
                            "external_user_id": {
                              "description": "Partner-provided user identifier (max 64 characters)",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 64
                            },
                            "external_partner_id": {
                              "description": "Partner-provided partner identifier (max 64 characters)",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 64
                            },
                            "external_transaction_id": {
                              "description": "Partner-provided transaction identifier (max 64 characters)",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 64
                            },
                            "external_metadata": {
                              "description": "Additional partner-provided metadata (max 1000 characters)",
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 1000
                            }
                          }
                        }
                      }
                    }
                  },
                  "required": ["data"]
                },
                "examples": {
                  "checkoutCreated": {
                    "summary": "Created hosted checkout",
                    "value": {
                      "data": {
                        "checkout_id": "018fdb88-4a87-73b2-9b9f-b5f38d11b924",
                        "checkout_url": "https://ramp.kraken.com/confirmation#checkout_id=018fdb88-4a87-73b2-9b9f-b5f38d11b924",
                        "expires_in": 600,
                        "request_data": {
                          "from": {
                            "symbol": "USD",
                            "type": "fiat",
                            "method": "credit_card",
                            "amount": "100.00"
                          },
                          "to": {
                            "symbol": "BTC",
                            "type": "crypto",
                            "method": "Bitcoin",
                            "network": "Bitcoin",
                            "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                            "memo": "123456"
                          },
                          "affiliate_fee_bps": "250",
                          "country": "US",
                          "subdivision": "CA",
                          "redirect_url": "https://example.com/checkout/success",
                          "failure_url": "https://example.com/checkout/failure",
                          "external_user_id": "user_01J0M7C0Z9F8YX3GQH8E",
                          "external_partner_id": "partner_456",
                          "external_transaction_id": "INV-2026-04-0042",
                          "external_metadata": "{\"order_id\":\"order_12345\"}"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "summary": "Create Ramp checkout session"
      }
    },
    "/v1/reports/settlement": {
      "get": {
        "operationId": "listSettlementReports",
        "summary": "List Settlement Reports",
        "description": "Retrieves a paginated list of settlement reports available to the authenticated Master User, with optional filters for date range and report type.",
        "tags": ["Reports"],
        "parameters": [
          {
            "in": "query",
            "name": "start_date",
            "description": "The inclusive start date for filtering settlement reports. Use in combination with `end_date` to specify a date range. Use RFC 3339 full-date format (`YYYY-MM-DD`).",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "style": "form",
            "example": "2026-04-25"
          },
          {
            "in": "query",
            "name": "end_date",
            "description": "The inclusive end date for filtering settlement reports. Use in combination with `start_date` to specify a date range. Use RFC 3339 full-date format (`YYYY-MM-DD`).",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "style": "form",
            "example": "2026-04-26"
          },
          {
            "in": "query",
            "name": "report_type",
            "description": "Filters the returned reports by one or more report types. If omitted, all report types are included. Repeat the query parameter to request multiple types, for example `report_type=price_trigger_swaps&report_type=swaps`. Unknown values return a 400 response.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": ["earn_rewards", "price_trigger_swaps", "swaps"]
              }
            },
            "style": "form",
            "explode": true,
            "example": ["price_trigger_swaps", "swaps"]
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of results to return on a single page. Defaults to 20, maximum 100.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form",
            "example": 20
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque cursor returned by a previous response's `next_page_token`. Omit to start from the beginning.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response containing a list of settlement reports and pagination details.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "An array of settlement report objects that match the specified filter criteria.",
                      "type": "array",
                      "items": {
                        "description": "Settlement report metadata.",
                        "type": "object",
                        "properties": {
                          "id": {
                            "description": "A unique identifier assigned to each settlement report.",
                            "type": "string",
                            "format": "uuid"
                          },
                          "date": {
                            "description": "The date covered by the report, spanning from 00:00:00 UTC to 23:59:59 UTC.",
                            "type": "string",
                            "format": "date",
                            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
                          },
                          "type": {
                            "description": "The category of the report.",
                            "type": "string",
                            "enum": ["swaps", "price_trigger_swaps", "earn_rewards"]
                          },
                          "size": {
                            "description": "The file size of the report, in bytes.",
                            "type": "string",
                            "pattern": "^[0-9]+$"
                          },
                          "name": {
                            "description": "A descriptive, human-readable name for the report.",
                            "type": "string"
                          }
                        },
                        "required": ["date", "id", "name", "size", "type"]
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque cursor for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 512
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": [
                      {
                        "id": "00000000-0000-0000-0000-000000000001",
                        "date": "2026-04-25",
                        "type": "swaps",
                        "size": "18342",
                        "name": "settlement-2026-04-25.csv"
                      },
                      {
                        "id": "00000000-0000-0000-0000-000000000003",
                        "date": "2026-04-27",
                        "type": "price_trigger_swaps",
                        "size": "7341",
                        "name": "settlement-2026-04-27.csv"
                      },
                      {
                        "id": "00000000-0000-0000-0000-000000000004",
                        "date": "2026-04-28",
                        "type": "earn_rewards",
                        "size": "8102",
                        "name": "settlement-2026-04-28.csv"
                      }
                    ]
                  }
                },
                "examples": {
                  "settlement-reports": {
                    "summary": "Settlement reports",
                    "value": {
                      "data": [
                        {
                          "id": "00000000-0000-0000-0000-000000000001",
                          "date": "2026-04-25",
                          "type": "swaps",
                          "size": "18342",
                          "name": "settlement-2026-04-25.csv"
                        },
                        {
                          "id": "00000000-0000-0000-0000-000000000003",
                          "date": "2026-04-27",
                          "type": "price_trigger_swaps",
                          "size": "7341",
                          "name": "settlement-2026-04-27.csv"
                        },
                        {
                          "id": "00000000-0000-0000-0000-000000000004",
                          "date": "2026-04-28",
                          "type": "earn_rewards",
                          "size": "8102",
                          "name": "settlement-2026-04-28.csv"
                        }
                      ]
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/reports/settlement?start_date=2026-04-25&end_date=2026-04-26&report_type=price_trigger_swaps&report_type=swaps&page_size=1\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/reports/settlement/{id}": {
      "get": {
        "operationId": "getSettlementReport",
        "summary": "Get Settlement Report",
        "description": "Retrieves a settlement report and provides a secure download URL for the authenticated Master User.",
        "tags": ["Reports"],
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "description": "The unique identifier of the settlement report to retrieve.",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "style": "simple",
            "example": "00000000-0000-0000-0000-000000000001"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response containing the settlement report details and secure download URL.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "The settlement report details and secure download URL.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "A unique identifier assigned to each settlement report.",
                          "type": "string",
                          "format": "uuid"
                        },
                        "date": {
                          "description": "The date covered by the report, spanning from 00:00:00 UTC to 23:59:59 UTC.",
                          "type": "string",
                          "format": "date",
                          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
                        },
                        "type": {
                          "description": "The category of the report.",
                          "type": "string",
                          "enum": ["swaps", "price_trigger_swaps", "earn_rewards"]
                        },
                        "size": {
                          "description": "The file size of the report, in bytes.",
                          "type": "string",
                          "pattern": "^[0-9]+$"
                        },
                        "name": {
                          "description": "A descriptive, human-readable name for the report.",
                          "type": "string"
                        },
                        "download_url": {
                          "description": "A secure URL to download the settlement report document. The URL is valid until the `expires_at` timestamp and can be used directly in HTTP requests or browser downloads without additional authentication headers.",
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 4096
                        },
                        "expires_at": {
                          "description": "When the download URL expires. The URL becomes invalid after this timestamp. Clients should request a new URL if they need to download the report after this time.",
                          "type": "string",
                          "format": "date-time"
                        }
                      },
                      "required": ["id", "date", "type", "size", "name", "download_url", "expires_at"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "id": "00000000-0000-0000-0000-000000000001",
                      "date": "2026-04-25",
                      "type": "swaps",
                      "size": "18342",
                      "name": "settlement-2026-04-25.csv",
                      "download_url": "https://reports.payward.com/dl/settlement-2026-04-25.csv",
                      "expires_at": "2026-04-26T18:24:11Z"
                    }
                  }
                },
                "examples": {
                  "settlement-report": {
                    "summary": "Settlement report",
                    "value": {
                      "data": {
                        "id": "00000000-0000-0000-0000-000000000001",
                        "date": "2026-04-25",
                        "type": "swaps",
                        "size": "18342",
                        "name": "settlement-2026-04-25.csv",
                        "download_url": "https://reports.payward.com/dl/settlement-2026-04-25.csv",
                        "expires_at": "2026-04-26T18:24:11Z"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Settlement report not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SettlementReportNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/reports/settlement/00000000-0000-0000-0000-000000000001\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/accounts/{account_id}/quotes/{quote_id}/execute": {
      "post": {
        "tags": ["Swaps"],
        "description": "Triggers execution of a pending account-funded swap quote.\n\nPreconditions: the quote must be in `offered` status and must not have passed its `expires_at` timestamp. Quotes are valid for ~2 minutes after creation; execution after expiry returns `410 Gone`.\n\nExecution is asynchronous. The response confirms the quote entered `executing` status; poll `GET /v1/accounts/{account_id}/quotes/{quote_id}` to observe the terminal state (`executed` or `failed`).",
        "operationId": "executeQuote",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "path",
            "name": "quote_id",
            "required": true,
            "schema": {
              "description": "ID of the quote to execute.",
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "style": "simple"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ExecuteQuoteResult"
                    }
                  }
                },
                "examples": {
                  "execute-accepted": {
                    "summary": "Execution started — quote is now `executing`",
                    "value": {
                      "data": {
                        "id": "Q-BTC2USD-1",
                        "status": "executing",
                        "executed_at": "2026-04-23T16:00:12Z"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "409": {
            "description": "Conflict - either the quote was already executed (`quote_already_executed`) or the account balance was insufficient for execution (`insufficient_funds`).",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/QuoteAlreadyExecutedErrorResponse"
                    },
                    {
                      "$ref": "#/components/schemas/InsufficientFundsErrorResponse"
                    }
                  ]
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "410": {
            "description": "Gone",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteExpiredErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Execute quote",
        "x-speakeasy-mcp": {
          "idempotentHint": true
        },
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/quotes/qte_01J0M7C0Z9F8YX3GQH8E/execute\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ]
      }
    },
    "/v1/accounts/{account_id}/quotes": {
      "post": {
        "tags": ["Swaps"],
        "description": "Creates an account-funded swap quote that locks a price for ~2 minutes.\n\nAccount-funded swap quotes must be executed before `expires_at` via `POST /v1/accounts/{account_id}/quotes/{quote_id}/execute`, otherwise they transition to `expired` and are no longer usable.\n\nExactly one of `from.amount` or `to.amount` must be set; the server calculates the other side. Setting both or neither is rejected with `400 Bad Request`.",
        "operationId": "createQuote",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to create a new quote.\n\nExactly one of `from.amount` or `to.amount` must be provided to\nindicate which side of the trade is fixed. The server calculates\nthe other side. Requests that set both amounts or omit both are\nrejected with a 400 Bad Request.",
                "type": "object",
                "properties": {
                  "from": {
                    "description": "Source asset and amount for the trade.",
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "description": "Asset ticker symbol (e.g. \"USD\"). Required.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 10
                      },
                      "type": {
                        "description": "Classification of the asset. Required.",
                        "type": "string",
                        "enum": ["fiat", "crypto", "stablecoin", "xstock"]
                      },
                      "amount": {
                        "description": "Amount to spend. Set this to fix the source side of the quote.\n\nExactly one of `from.amount` or `to.amount` must be set. Setting\nboth or neither is rejected with a 400 Bad Request. The cross-field\ncheck is enforced by the server; the validator below only enforces\nthe format when the field is set, so `ignore_empty: true` is required.",
                        "type": "string",
                        "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                        "maxLength": 32
                      }
                    }
                  },
                  "to": {
                    "description": "Destination asset and amount for the trade.",
                    "type": "object",
                    "properties": {
                      "symbol": {
                        "description": "Asset ticker symbol (e.g. \"BTC\"). Required.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 10
                      },
                      "type": {
                        "description": "Classification of the asset. Required.",
                        "type": "string",
                        "enum": ["fiat", "crypto", "stablecoin", "xstock"]
                      },
                      "amount": {
                        "description": "Amount to receive. Set this to fix the destination side of the quote.\n\nExactly one of `from.amount` or `to.amount` must be set. Setting\nboth or neither is rejected with a 400 Bad Request. The cross-field\ncheck is enforced by the server; the validator below only enforces\nthe format when the field is set, so `ignore_empty: true` is required.",
                        "type": "string",
                        "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
                        "maxLength": 32
                      }
                    }
                  },
                  "fee": {
                    "$ref": "#/components/schemas/PartnerFee"
                  }
                },
                "required": ["from", "to"]
              },
              "examples": {
                "swap-x-btc-for-usd": {
                  "summary": "Swap a fixed amount of BTC for USD",
                  "value": {
                    "from": {
                      "symbol": "BTC",
                      "type": "crypto",
                      "amount": "0.5"
                    },
                    "to": {
                      "symbol": "USD",
                      "type": "fiat"
                    },
                    "fee": {
                      "bps": 50
                    }
                  }
                },
                "swap-btc-for-x-usd": {
                  "summary": "Swap BTC for a fixed amount of USD",
                  "value": {
                    "from": {
                      "symbol": "BTC",
                      "type": "crypto"
                    },
                    "to": {
                      "symbol": "USD",
                      "type": "fiat",
                      "amount": "5000"
                    },
                    "fee": {
                      "bps": 50
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Quote"
                    }
                  }
                },
                "examples": {
                  "swap-x-btc-for-usd": {
                    "summary": "Swap a fixed amount of BTC for USD",
                    "value": {
                      "data": {
                        "id": "Q-BTC2USD-1",
                        "status": "offered",
                        "expires_at": "2026-04-23T16:00:30Z",
                        "from": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.5"
                        },
                        "to": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "31495.50"
                        },
                        "fees": {
                          "trade": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "150.00"
                          }
                        },
                        "rate": {
                          "base": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto"
                          },
                          "quote": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat"
                          },
                          "price": "63291.00"
                        }
                      }
                    }
                  },
                  "swap-btc-for-x-usd": {
                    "summary": "Swap BTC for a fixed amount of USD",
                    "value": {
                      "data": {
                        "id": "Q-BTC2USD-2",
                        "status": "offered",
                        "expires_at": "2026-04-23T16:00:30Z",
                        "from": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.07939896"
                        },
                        "to": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "5000.00"
                        },
                        "fees": {
                          "trade": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "25.00"
                          }
                        },
                        "rate": {
                          "base": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto"
                          },
                          "quote": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat"
                          },
                          "price": "63291.00"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ForbiddenErrorResponse"
                    },
                    {
                      "$ref": "#/components/schemas/TradeLockedErrorResponse"
                    }
                  ]
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Create quote",
        "x-speakeasy-mcp": {
          "idempotentHint": true
        },
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/quotes\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"from\": {\n      \"symbol\": \"BTC\",\n      \"type\": \"crypto\",\n      \"amount\": \"0.5\"\n    },\n    \"to\": {\n      \"symbol\": \"USD\",\n      \"type\": \"fiat\"\n    },\n    \"fee\": {\n      \"bps\": 50\n    }\n  }'"
          }
        ]
      }
    },
    "/v1/accounts/{account_id}/quotes/{quote_id}": {
      "get": {
        "tags": ["Swaps"],
        "description": "Retrieves the current state of a previously created quote.\n\nUse this to poll the lifecycle of a quote you submitted via `POST /v1/accounts/{account_id}/quotes` or executed via `POST /v1/accounts/{account_id}/quotes/{quote_id}/execute`. Quote `status` transitions are: `offered` -> `executing` -> `executed` (terminal). A quote can also transition to `expired` (TTL elapsed before execution) or `failed` (executor rejected).",
        "operationId": "getQuote",
        "parameters": [
          {
            "$ref": "#/components/parameters/AccountIdPath"
          },
          {
            "in": "path",
            "name": "quote_id",
            "required": true,
            "schema": {
              "description": "ID of the quote to retrieve.",
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            },
            "style": "simple"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/Quote"
                    }
                  }
                },
                "examples": {
                  "offered-quote": {
                    "summary": "Quote in `offered` status, available for execution",
                    "value": {
                      "data": {
                        "id": "Q-BTC2USD-1",
                        "status": "offered",
                        "expires_at": "2026-04-23T16:00:30Z",
                        "from": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.5"
                        },
                        "to": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "31495.50"
                        },
                        "fees": {
                          "trade": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "150.00"
                          }
                        },
                        "rate": {
                          "base": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto"
                          },
                          "quote": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat"
                          },
                          "price": "63291.00"
                        }
                      }
                    }
                  },
                  "executed-quote": {
                    "summary": "Quote already executed — terminal state",
                    "value": {
                      "data": {
                        "id": "Q-BTC2USD-1",
                        "status": "executed",
                        "expires_at": "2026-04-23T16:00:30Z",
                        "from": {
                          "symbol": "BTC",
                          "name": "Bitcoin",
                          "type": "crypto",
                          "amount": "0.5"
                        },
                        "to": {
                          "symbol": "USD",
                          "name": "US Dollar",
                          "type": "fiat",
                          "amount": "31495.50"
                        },
                        "fees": {
                          "trade": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat",
                            "amount": "150.00"
                          }
                        },
                        "rate": {
                          "base": {
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "type": "crypto"
                          },
                          "quote": {
                            "symbol": "USD",
                            "name": "US Dollar",
                            "type": "fiat"
                          },
                          "price": "63291.00"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceUnavailableErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "summary": "Get quote",
        "x-speakeasy-mcp": {
          "readOnlyHint": true
        },
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/accounts/W4BE9868GY65TB6523/quotes/qte_01J0M7C0Z9F8YX3GQH8E\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ]
      }
    },
    "/v1/users/{user_id}/travel-rule/verifications": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserIdPath"
        }
      ],
      "post": {
        "operationId": "createTravelRuleVerification",
        "tags": ["Travel Rule Verifications"],
        "summary": "Create verification",
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "description": "Creates a Travel Rule verification case for a known wallet address.\n\nUse this endpoint when the wallet address is known before a specific product flow needs to continue.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTravelRuleVerificationBody"
              },
              "examples": {
                "hosted-wallet": {
                  "summary": "Hosted wallet verification",
                  "value": {
                    "address": "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
                    "method": "hosted_declaration"
                  }
                },
                "self-hosted-wallet": {
                  "summary": "Self-hosted wallet verification",
                  "value": {
                    "address": "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
                    "method": "self_attestation",
                    "evidence": {
                      "ownership_confirmed": true,
                      "two_factor_completed": true,
                      "two_factor_method": "otp",
                      "attestation_text": "In accordance with Payward's Terms of Service, I, customer {userID}, confirm that the wallet address {wallet-address} is a self-hosted wallet owned and controlled solely by me. I make this declaration on {date}, and it applies to all deposits and withdrawals between this wallet and my account.",
                      "user_confirmed_at": "2026-06-23T10:00:00Z"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateTravelRuleVerificationEnvelope"
                },
                "examples": {
                  "hosted-wallet-verified": {
                    "summary": "Hosted wallet verified",
                    "value": {
                      "data": {
                        "verification_id": "ver_0195e4d2-a4d0-7b12-8f4a-123456789abc",
                        "wallet_type": "hosted",
                        "method": "hosted_declaration",
                        "status": "verified"
                      }
                    }
                  },
                  "self-hosted-wallet-verified": {
                    "summary": "Self-hosted wallet verified",
                    "value": {
                      "data": {
                        "verification_id": "ver_0195e4d2-a4d0-7b12-8f4a-123456789abc",
                        "wallet_type": "self_hosted",
                        "method": "self_attestation",
                        "status": "verified"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                },
                "examples": {
                  "invalid-request": {
                    "summary": "Invalid request",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "address",
                            "message": "must be a valid address for the selected network"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                },
                "examples": {
                  "authentication-failed": {
                    "summary": "Authentication failed",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unauthenticated",
                        "status": 401
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                },
                "examples": {
                  "caller-is-not-allowed": {
                    "summary": "Caller is not allowed",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "forbidden",
                        "status": 403
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "The verification conflicts with the current Travel Rule state.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/WalletTypeMismatchError"
                    },
                    {
                      "$ref": "#/components/schemas/VerificationNotEnabledError"
                    },
                    {
                      "$ref": "#/components/schemas/SatoshiTestRequiredError"
                    },
                    {
                      "$ref": "#/components/schemas/VerificationRejectedError"
                    }
                  ]
                },
                "examples": {
                  "wallet-type-mismatch": {
                    "summary": "Wallet type conflicts with the existing verification",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "wallet_type_mismatch",
                        "status": 409
                      }
                    }
                  },
                  "verification-not-enabled": {
                    "summary": "Verification is not enabled",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "verification_not_enabled",
                        "status": 409
                      }
                    }
                  },
                  "satoshi-test-required": {
                    "summary": "A Satoshi test is required",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "satoshi_test_required",
                        "status": 409
                      }
                    }
                  },
                  "verification-rejected": {
                    "summary": "Verification was rejected",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "verification_rejected",
                        "status": 409
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                },
                "examples": {
                  "rate-limit-exceeded": {
                    "summary": "Rate limit exceeded",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "resource_exhausted",
                        "status": 429
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                },
                "examples": {
                  "internal-error": {
                    "summary": "Internal error",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "internal",
                        "status": 500
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                },
                "examples": {
                  "service-unavailable": {
                    "summary": "Service unavailable",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unavailable",
                        "status": 503
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                },
                "examples": {
                  "request-deadline-exceeded": {
                    "summary": "Request deadline exceeded",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "deadline_exceeded",
                        "status": 504
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/{user_id}/travel-rule/verifications/{verification_id}": {
      "parameters": [
        {
          "$ref": "#/components/parameters/UserIdPath"
        },
        {
          "$ref": "#/components/parameters/TravelRuleVerificationIdPath"
        }
      ],
      "get": {
        "operationId": "getTravelRuleVerification",
        "tags": ["Travel Rule Verifications"],
        "summary": "Get verification",
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "description": "Gets a previously returned proactive Travel Rule verification case.\n",
        "responses": {
          "200": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTravelRuleVerificationEnvelope"
                },
                "examples": {
                  "self-hosted-wallet-verified": {
                    "summary": "Self-hosted wallet verified",
                    "value": {
                      "data": {
                        "verification_id": "ver_0195e4d2-a4d0-7b12-8f4a-123456789abc",
                        "wallet_type": "self_hosted",
                        "method": "self_attestation",
                        "status": "verified",
                        "created_at": "2026-06-23T10:00:00Z",
                        "updated_at": "2026-06-23T10:00:00Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                },
                "examples": {
                  "invalid-request": {
                    "summary": "Invalid request",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "address",
                            "message": "must be a valid address for the selected network"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                },
                "examples": {
                  "authentication-failed": {
                    "summary": "Authentication failed",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unauthenticated",
                        "status": 401
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                },
                "examples": {
                  "caller-is-not-allowed": {
                    "summary": "Caller is not allowed",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "forbidden",
                        "status": 403
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationNotFoundError"
                },
                "examples": {
                  "verification-not-found": {
                    "summary": "Verification not found",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "verification_not_found",
                        "status": 404
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                },
                "examples": {
                  "rate-limit-exceeded": {
                    "summary": "Rate limit exceeded",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "resource_exhausted",
                        "status": 429
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                },
                "examples": {
                  "internal-error": {
                    "summary": "Internal error",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "internal",
                        "status": 500
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                },
                "examples": {
                  "service-unavailable": {
                    "summary": "Service unavailable",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unavailable",
                        "status": 503
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                },
                "examples": {
                  "request-deadline-exceeded": {
                    "summary": "Request deadline exceeded",
                    "value": {
                      "error": {
                        "type": "travel_rule_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "deadline_exceeded",
                        "status": 504
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/{user_id}/verifications/url": {
      "post": {
        "operationId": "submitVerificationFromUrl",
        "summary": "Submit Verification from URL",
        "tags": ["Verifications"],
        "description": "Submit a verification for a user with documents provided via presigned URLs.\n\nThis endpoint is useful when documents are already stored in a cloud storage\nprovider (e.g. AWS S3, Google Cloud Storage) and accepts identity document,\nresidence document, and selfie verification payloads.\n\nA verification is a check performed on a user to verify information provided by\nthe user, typically by a third party such as an identity verification provider.\nChecks are most commonly performed on documents, such as a passport or driver's\nlicense, but can also include sanctions or Politically Exposed Person (PEP)\nchecks.\n\n## URL and file requirements\n\nURLs must be HTTPS URLs on allowlisted domains, up to 4096 characters. Each\nredirect target must also use HTTPS and an allowlisted domain. The server\nfollows up to three redirects.\n\nThe server extracts the decoded filename from the submitted URL path. The\nfilename must be 255 bytes or less, cannot be `.` or `..`, and cannot contain\npath separators or control characters. It must include an extension matching the\ndetected file content.\n\nDownloaded files can be up to 150 MiB (157286400 bytes). The size limit is\nenforced from the `Content-Length` header and while streaming the response body.\nAccepted file types are JPEG/JPG, PNG, PDF, MP4/M4V, WebM, and MOV/QuickTime.\nPassport identity document submissions must omit `back_url`.\n\nIdentity document submissions must include raw verifier response evidence for\nKYC verification. Provide either `metadata.verifier_response` or\n`verifier_response_url`.\n\nIf `verifier_response_url` is provided, that file is used as raw verifier\nresponse evidence instead of `metadata.verifier_response`.\n\n`metadata.verified_at` must be a valid date-time. Invalid values are rejected\ninstead of being replaced with the submission time. If file upload or final\nverification submission fails, files uploaded for that request are discarded.\n\n## Domain allowlisting\n\nFor security, the domains you use for presigned URLs must be allowlisted before\nyou can use this endpoint. Contact your account manager to configure the allowed\ndomains for your integration.",
        "parameters": [
          {
            "in": "path",
            "name": "user_id",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 14,
              "maxLength": 42
            },
            "style": "simple",
            "example": "AA45N8G4MLDYWAR7",
            "description": "ID of the user the request applies to. For partners operating in the B2B2C model, this is the Sub-User the request is acting on behalf of."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["identity_document"]
                      },
                      "metadata": {
                        "description": "Metadata about the verification.",
                        "type": "object",
                        "properties": {
                          "identity": {
                            "description": "The identity of the person in the document",
                            "type": "object",
                            "properties": {
                              "full_name": {
                                "description": "User's full name",
                                "type": "object",
                                "properties": {
                                  "first_name": {
                                    "description": "User's first name",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 256
                                  },
                                  "middle_name": {
                                    "description": "User's middle name",
                                    "type": ["string", "null"],
                                    "minLength": 1,
                                    "maxLength": 256
                                  },
                                  "last_name": {
                                    "description": "User's last name",
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 256
                                  }
                                },
                                "required": ["first_name", "last_name"]
                              },
                              "birth": {
                                "description": "User birth details.",
                                "type": "object",
                                "properties": {
                                  "date": {
                                    "description": "User's date of birth",
                                    "type": "string",
                                    "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                                    "format": "date",
                                    "example": "2023-03-13"
                                  }
                                },
                                "required": ["date"]
                              }
                            },
                            "required": ["full_name", "birth"]
                          },
                          "document_type": {
                            "description": "Type of identity document",
                            "type": "string",
                            "enum": [
                              "passport",
                              "drivers_license",
                              "id_card",
                              "residence_card",
                              "special_permanent_residence_card"
                            ]
                          },
                          "document_number": {
                            "description": "Number of the document (e.g. driver's license number)",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "issuing_country": {
                            "description": "Country of issuance of the identity document",
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/CountryCode"
                              }
                            ]
                          },
                          "nationality": {
                            "description": "Nationality of the identified person according to the document",
                            "type": ["string", "null"],
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/CountryCode"
                              }
                            ]
                          },
                          "verifier": {
                            "description": "Name of the verification provider.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "verified_at": {
                            "description": "The date and time the verification was completed. Invalid values are rejected.",
                            "type": "string",
                            "format": "date-time",
                            "example": "2023-03-13T12:34:56Z"
                          },
                          "verifier_response": {
                            "description": "JSON object response from the verifier. Required for identity document submissions unless `verifier_response_url` is provided.",
                            "type": ["object", "null"],
                            "additionalProperties": true
                          },
                          "external_verification_id": {
                            "description": "External document id of the verification that can be provided by the partner",
                            "type": ["string", "null"],
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "expiration_date": {
                            "description": "Optional expiration date of the verification when it is no longer valid in ISO 8601 format.",
                            "type": ["string", "null"],
                            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                            "format": "date",
                            "example": "2028-03-13"
                          }
                        },
                        "required": [
                          "identity",
                          "document_type",
                          "document_number",
                          "issuing_country",
                          "verified_at",
                          "verifier"
                        ]
                      },
                      "front_url": {
                        "description": "Presigned URL to the front side of the identity document. The filename is extracted from the URL path and must meet the URL and file requirements.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 4096,
                        "format": "uri"
                      },
                      "back_url": {
                        "description": "Presigned URL to the back side of the identity document (optional). The filename is extracted from the URL path and must meet the URL and file requirements. Passport submissions must omit this field.",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 4096,
                        "format": "uri"
                      },
                      "verifier_response_url": {
                        "description": "Presigned URL to the verifier response document (optional). The filename is extracted from the URL path and must meet the URL and file requirements. If provided, this file is used as the raw verifier response evidence instead of `metadata.verifier_response`.",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 4096,
                        "format": "uri"
                      }
                    },
                    "required": ["metadata", "type", "front_url"]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["residence_document"]
                      },
                      "metadata": {
                        "description": "Metadata about the verification.",
                        "type": "object",
                        "properties": {
                          "address": {
                            "description": "The address captured in this document",
                            "type": "object",
                            "properties": {
                              "city": {
                                "description": "City",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 128
                              },
                              "postal_code": {
                                "description": "Postal code",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 32
                              },
                              "province": {
                                "description": "Province or state",
                                "type": ["string", "null"],
                                "minLength": 1,
                                "maxLength": 128
                              },
                              "country": {
                                "description": "Country",
                                "allOf": [
                                  {
                                    "$ref": "#/components/schemas/CountryCode"
                                  }
                                ]
                              },
                              "line1": {
                                "description": "Address line 1",
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 256
                              },
                              "line2": {
                                "description": "Address line 2",
                                "type": ["string", "null"],
                                "minLength": 1,
                                "maxLength": 256
                              }
                            },
                            "required": ["city", "country", "line1", "postal_code"]
                          },
                          "document_type": {
                            "description": "Type of residence verification document",
                            "type": "string",
                            "enum": [
                              "bank_statement",
                              "credit_card_statement",
                              "employer_letter_or_work_contract",
                              "government_issued_document",
                              "home_or_rental_insurance",
                              "internet_or_cable_bill",
                              "mobile_phone_bill",
                              "mortgage_statement",
                              "official_government_letter",
                              "passport_address_page",
                              "rental_or_lease_agreement",
                              "residence_certificate",
                              "social_insurance_payment_receipt",
                              "tax_receipt",
                              "tax_return",
                              "utility_bill",
                              "other"
                            ]
                          },
                          "document_number": {
                            "description": "Number of the document (e.g. driver's license number)",
                            "type": ["string", "null"],
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "verifier": {
                            "description": "Name of the verification provider.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "verified_at": {
                            "description": "The date and time the verification was completed. Invalid values are rejected.",
                            "type": "string",
                            "format": "date-time",
                            "example": "2023-03-13T12:34:56Z"
                          },
                          "verifier_response": {
                            "description": "JSON object response from the verifier",
                            "type": ["object", "null"],
                            "additionalProperties": true
                          },
                          "external_verification_id": {
                            "description": "External document id of the verification that can be provided by the partner",
                            "type": ["string", "null"],
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "expiration_date": {
                            "description": "Optional expiration date of the verification when it is no longer valid in ISO 8601 format.",
                            "type": ["string", "null"],
                            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                            "format": "date",
                            "example": "2028-03-13"
                          }
                        },
                        "required": ["address", "document_type", "verified_at", "verifier"]
                      },
                      "document_url": {
                        "description": "Presigned URL to the residence document. The filename is extracted from the URL path and must meet the URL and file requirements.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 4096,
                        "format": "uri"
                      },
                      "verifier_response_url": {
                        "description": "Presigned URL to the verifier response document (optional). The filename is extracted from the URL path and must meet the URL and file requirements. If provided, this file is used as the raw verifier response evidence instead of `metadata.verifier_response`.",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 4096,
                        "format": "uri"
                      }
                    },
                    "required": ["metadata", "type", "document_url"]
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["selfie"]
                      },
                      "metadata": {
                        "description": "Metadata about the verification.",
                        "type": "object",
                        "properties": {
                          "selfie_type": {
                            "description": "Type of selfie",
                            "type": "string",
                            "enum": ["selfie", "selfie_capture_video"]
                          },
                          "verifier": {
                            "description": "Name of the verification provider.",
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "verified_at": {
                            "description": "The date and time the verification was completed. Invalid values are rejected.",
                            "type": "string",
                            "format": "date-time",
                            "example": "2023-03-13T12:34:56Z"
                          },
                          "verifier_response": {
                            "description": "JSON object response from the verifier",
                            "type": ["object", "null"],
                            "additionalProperties": true
                          },
                          "external_verification_id": {
                            "description": "External document id of the verification that can be provided by the partner",
                            "type": ["string", "null"],
                            "minLength": 1,
                            "maxLength": 256
                          },
                          "expiration_date": {
                            "description": "Optional expiration date of the verification when it is no longer valid in ISO 8601 format.",
                            "type": ["string", "null"],
                            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                            "format": "date",
                            "example": "2028-03-13"
                          }
                        },
                        "required": ["selfie_type", "verified_at", "verifier"]
                      },
                      "selfie_url": {
                        "description": "Presigned URL to the selfie. The filename is extracted from the URL path and must meet the URL and file requirements.",
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 4096,
                        "format": "uri"
                      },
                      "verifier_response_url": {
                        "description": "Presigned URL to the verifier response document (optional). The filename is extracted from the URL path and must meet the URL and file requirements. If provided, this file is used as the raw verifier response evidence instead of `metadata.verifier_response`.",
                        "type": ["string", "null"],
                        "minLength": 1,
                        "maxLength": 4096,
                        "format": "uri"
                      }
                    },
                    "required": ["metadata", "type", "selfie_url"]
                  }
                ]
              },
              "examples": {
                "identity-document": {
                  "summary": "Identity document",
                  "value": {
                    "type": "identity_document",
                    "metadata": {
                      "identity": {
                        "full_name": {
                          "first_name": "Alex",
                          "last_name": "Morgan"
                        },
                        "birth": {
                          "date": "2023-03-13"
                        }
                      },
                      "document_type": "passport",
                      "document_number": "A1234567",
                      "issuing_country": "AD",
                      "verifier": "example",
                      "verified_at": "2023-03-13T12:34:56Z",
                      "verifier_response": {
                        "status": "approved"
                      }
                    },
                    "front_url": "https://your-allowlisted-bucket.s3.amazonaws.com/front.png?X-Amz-Algorithm=AWS4-HMAC-SHA256"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "verification_id": {
                          "description": "Internal ID of the verification.",
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 256
                        }
                      },
                      "required": ["verification_id"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "verification_id": "ver_01J0M9P2T7K3W2BHJ7T9"
                    }
                  }
                },
                "examples": {
                  "created-verification": {
                    "summary": "Created verification",
                    "value": {
                      "data": {
                        "verification_id": "ver_01J0M9P2T7K3W2BHJ7T9"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/users/AA45N8G4MLDYWAR7/verifications/url\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"type\": \"identity_document\",\n    \"metadata\": {\n      \"identity\": {\n        \"full_name\": {\n          \"first_name\": \"Alex\",\n          \"last_name\": \"Morgan\"\n        },\n        \"birth\": {\n          \"date\": \"2023-03-13\"\n        }\n      },\n      \"document_type\": \"passport\",\n      \"document_number\": \"A1234567\",\n      \"issuing_country\": \"AD\",\n      \"verifier\": \"example\",\n      \"verified_at\": \"2023-03-13T12:34:56Z\",\n      \"verifier_response\": {\n        \"status\": \"approved\"\n      }\n    },\n    \"front_url\": \"https://your-allowlisted-bucket.s3.amazonaws.com/front.png?X-Amz-Algorithm=AWS4-HMAC-SHA256\"\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/verifications/start/url": {
      "post": {
        "operationId": "startVerificationFromUrl",
        "summary": "Start Verification from URL",
        "tags": ["Verifications"],
        "description": "Start a Payward-performed verification for a user with evidence provided via presigned URLs.\n\nThis endpoint accepts the same verification families as Submit Verification from URL: identity document, residence document, and liveness. Liveness checks use three-point images. Use this endpoint when Payward should verify the submitted evidence. Use Submit Verification from URL when your integration already verified the evidence and Payward should trust the verifier result you provide.\n\n## URL and file requirements\n\nEvidence URLs must be HTTPS URLs on allowlisted domains, up to 4096 characters. Each redirect target must also use HTTPS and an allowlisted domain. The server follows up to three redirects.\n\nThe server extracts the decoded filename from the submitted URL path. The filename must be 255 bytes or less, cannot be `.` or `..`, and cannot contain path separators or control characters. It must include an extension matching the detected file content.\n\nDownloaded files can be up to 150 MiB (157286400 bytes). The size limit is enforced from the `Content-Length` header and while streaming the response body. Accepted file types are JPEG/JPG, PNG, PDF, MP4/M4V, WebM, and MOV/QuickTime. Passport identity document submissions must omit `back_url`.\n\n## Verification result fields\n\nDo not send `verifier`, `verified_at`, `verifier_response`, or `verifier_response_url` to this endpoint. Those fields belong to Submit Verification from URL because that endpoint trusts a verification result supplied by your integration.\n\n## Domain allowlisting\n\nFor security, the domains you use for presigned URLs must be allowlisted before you can use this endpoint. Contact your account manager to configure the allowed domains for your integration.",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserIdPath"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartUrlVerificationRequest"
              },
              "examples": {
                "identity-document": {
                  "summary": "Identity document",
                  "value": {
                    "type": "identity_document",
                    "metadata": {
                      "identity": {
                        "full_name": {
                          "first_name": "Alex",
                          "last_name": "Morgan"
                        },
                        "birth": {
                          "date": "1990-01-31"
                        }
                      },
                      "document_type": "passport",
                      "document_number": "A1234567",
                      "issuing_country": "US"
                    },
                    "front_url": "https://your-allowlisted-bucket.s3.amazonaws.com/front.png?X-Amz-Algorithm=AWS4-HMAC-SHA256"
                  }
                },
                "residence-document": {
                  "summary": "Residence document",
                  "value": {
                    "type": "residence_document",
                    "metadata": {
                      "address": {
                        "line1": "800 Market Street",
                        "line2": "Suite 210",
                        "city": "San Francisco",
                        "postal_code": "94102",
                        "province": "CA",
                        "country": "US"
                      },
                      "document_type": "utility_bill"
                    },
                    "document_url": "https://your-allowlisted-bucket.s3.amazonaws.com/address.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256"
                  }
                },
                "liveness": {
                  "summary": "Liveness",
                  "value": {
                    "type": "liveness",
                    "left_url": "https://your-allowlisted-bucket.s3.amazonaws.com/liveness-left.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256",
                    "center_url": "https://your-allowlisted-bucket.s3.amazonaws.com/liveness-center.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256",
                    "right_url": "https://your-allowlisted-bucket.s3.amazonaws.com/liveness-right.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Verification started.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartUrlVerificationResponse"
                },
                "example": {
                  "data": {
                    "verification_id": "PVABCDE-FGHIJ-KLMNOP"
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/users/AA45N8G4MLDYWAR7/verifications/start/url\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"type\": \"identity_document\",\n    \"metadata\": {\n      \"identity\": {\n        \"full_name\": {\n          \"first_name\": \"Alex\",\n          \"last_name\": \"Morgan\"\n        },\n        \"birth\": {\n          \"date\": \"1990-01-31\"\n        }\n      },\n      \"document_type\": \"passport\",\n      \"document_number\": \"A1234567\",\n      \"issuing_country\": \"US\"\n    },\n    \"front_url\": \"https://your-allowlisted-bucket.s3.amazonaws.com/front.png?X-Amz-Algorithm=AWS4-HMAC-SHA256\"\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/verifications/start/hosted": {
      "post": {
        "operationId": "startVerificationFromHosted",
        "summary": "Start verification from hosted flow",
        "tags": ["Verifications"],
        "description": "Start a hosted verification UI flow for a user.\n\nThe hosted UI collects the information needed to complete verification. The request body has no fields today.",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserIdPath"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartHostedVerificationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Hosted verification started.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartHostedVerificationResponse"
                },
                "example": {
                  "data": {
                    "verification_id": "PVABCDE-FGHIJ-KLMNOP",
                    "inquiry_id": "hosted_verification_test",
                    "session_token": "hosted_session_test",
                    "environment_id": "hosted_ui_test"
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/users/AA45N8G4MLDYWAR7/verifications/start/hosted\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{}'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/verifications/{verification_id}/resume": {
      "post": {
        "operationId": "resumeHostedVerification",
        "summary": "Resume hosted verification",
        "tags": ["Verifications"],
        "description": "Resume an existing hosted verification flow and mint or reuse a session token. If the hosted session has expired, the service refreshes it so the hosted UI can load again.",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserIdPath"
          },
          {
            "$ref": "#/components/parameters/VerificationIdPath"
          }
        ],
        "responses": {
          "200": {
            "description": "Hosted verification resumed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResumeHostedVerificationResponse"
                },
                "example": {
                  "data": {
                    "inquiry_id": "hosted_verification_test",
                    "session_token": "hosted_session_test",
                    "environment_id": "hosted_ui_test"
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/users/AA45N8G4MLDYWAR7/verifications/PVABCDE-FGHIJ-KLMNOP/resume\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/verifications/{verification_id}/otl": {
      "post": {
        "operationId": "createHostedVerificationOneTimeLink",
        "summary": "Create one-time link for hosted verification",
        "tags": ["Verifications"],
        "description": "Mint a fresh one-time link for an existing hosted verification flow. Hand the returned URL to the user when you need a shareable hosted UI link instead of an embedded session token.",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserIdPath"
          },
          {
            "$ref": "#/components/parameters/VerificationIdPath"
          }
        ],
        "responses": {
          "200": {
            "description": "One-time link created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateHostedVerificationOneTimeLinkResponse"
                },
                "example": {
                  "data": {
                    "url": "https://verify.example.com/verify?code=us1-handle",
                    "url_short": "https://verify.example.com/v/HANDLE"
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/users/AA45N8G4MLDYWAR7/verifications/PVABCDE-FGHIJ-KLMNOP/otl\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/verifications/{verification_id}": {
      "get": {
        "operationId": "getVerification",
        "summary": "Get verification",
        "tags": ["Verifications"],
        "description": "Get a verification summary for the given user and verification ID.",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserIdPath"
          },
          {
            "$ref": "#/components/parameters/VerificationIdPath"
          }
        ],
        "responses": {
          "200": {
            "description": "Verification returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetVerificationResponse"
                },
                "example": {
                  "data": {
                    "verification_id": "PVABCDE-FGHIJ-KLMNOP",
                    "types": ["proof_of_liveness"],
                    "method": "url",
                    "status": "pending",
                    "created_at": "2026-05-20T14:30:00Z",
                    "updated_at": "2026-05-20T14:45:00Z"
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/users/AA45N8G4MLDYWAR7/verifications/PVABCDE-FGHIJ-KLMNOP\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/users/{user_id}/verifications": {
      "get": {
        "operationId": "listVerifications",
        "summary": "List verifications",
        "tags": ["Verifications"],
        "description": "List verification summaries for the given user.",
        "parameters": [
          {
            "$ref": "#/components/parameters/UserIdPath"
          }
        ],
        "responses": {
          "200": {
            "description": "Verifications returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVerificationsResponse"
                },
                "example": {
                  "data": {
                    "verifications": [
                      {
                        "verification_id": "PVABCDE-FGHIJ-KLMNOP",
                        "types": ["proof_of_identity"],
                        "method": "url",
                        "status": "completed",
                        "created_at": "2026-05-20T14:30:00Z",
                        "updated_at": "2026-05-20T14:45:00Z"
                      },
                      {
                        "verification_id": "PV12345-ABCDE-6789XY",
                        "types": ["proof_of_address"],
                        "method": "url",
                        "status": "pending",
                        "created_at": "2026-05-20T14:30:00Z",
                        "updated_at": "2026-05-20T14:45:00Z"
                      },
                      {
                        "verification_id": "PVABCDE-12345-KLMNOP",
                        "types": ["proof_of_liveness"],
                        "method": "url",
                        "status": "pending",
                        "created_at": "2026-05-20T14:30:00Z",
                        "updated_at": "2026-05-20T14:45:00Z"
                      },
                      {
                        "verification_id": "PV67890-FGHIJ-KLMNOP",
                        "types": ["proof_of_identity", "proof_of_address", "proof_of_liveness"],
                        "method": "hosted",
                        "status": "pending",
                        "created_at": "2026-05-20T14:30:00Z",
                        "updated_at": "2026-05-20T14:45:00Z"
                      }
                    ]
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Error response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/users/AA45N8G4MLDYWAR7/verifications\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      }
    },
    "/v1/webhooks": {
      "get": {
        "operationId": "listWebhooks",
        "summary": "List Webhooks",
        "tags": ["Webhooks"],
        "description": "Retrieve all webhooks registered for your domain.\n\nThis endpoint returns each webhook configuration, including the event types it is subscribed to.\n\n**Note:** The webhook `signing_secret` is NOT included in this response. The secret is only returned once during registration and cannot be retrieved again.",
        "parameters": [
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20,
              "description": "Maximum number of webhooks to return. Defaults to 20 when omitted."
            },
            "style": "form",
            "example": 20
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 256,
              "description": "Opaque token returned by a previous response. Omit to start from the beginning."
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          }
        ],
        "responses": {
          "200": {
            "description": "Webhooks retrieved successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "description": "List of webhooks registered for this domain. Always present; returns an empty array when no webhooks are registered.\n",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "description": "Unique identifier for the webhook",
                            "example": "ep_3FJn9bPPldQiddo0BAmk7dnfdMB"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri",
                            "description": "The registered webhook URL",
                            "example": "https://partner.example.com/hooks/quote"
                          },
                          "description": {
                            "type": "string",
                            "description": "Free-form partner-supplied label for the webhook. Empty when no description was set.",
                            "example": "primary delivery"
                          },
                          "disabled": {
                            "type": "boolean",
                            "description": "Whether the webhook is disabled. Disabled webhooks do not receive events.",
                            "example": true
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "description": "When the webhook was created",
                            "example": "2026-06-18T16:58:08.893527Z"
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time",
                            "description": "When the webhook was last updated",
                            "example": "2026-06-18T16:58:08.895052Z"
                          },
                          "events": {
                            "type": "array",
                            "description": "List of event types this webhook is subscribed to",
                            "maxItems": 100,
                            "uniqueItems": true,
                            "items": {
                              "type": "string",
                              "enum": [
                                "quote.executed",
                                "quote.cancelled",
                                "quote.execution_failed",
                                "user.closed",
                                "user.disabled",
                                "user.verified",
                                "user.verification_failed",
                                "user.verification_needed",
                                "conversion.deposit_completed",
                                "conversion.deposit_failed",
                                "conversion.deposit_held",
                                "conversion.travel_rule_blocked",
                                "conversion.quote_execution_failed",
                                "conversion.withdrawal_completed",
                                "conversion.withdrawal_failed",
                                "transaction.swap",
                                "transaction.price_trigger_swap",
                                "transaction.earn_reward",
                                "transaction.deposit",
                                "transaction.withdrawal",
                                "transaction.transfer",
                                "funds.deposit_received",
                                "funds.deposit_held",
                                "funds.deposit_credited",
                                "funds.deposit_returned",
                                "funds.deposit_failed"
                              ]
                            },
                            "example": ["quote.executed"]
                          }
                        },
                        "required": ["id", "url", "created_at", "updated_at", "events"]
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque cursor for the next page of results. Absent when there are no more pages.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": [
                      {
                        "id": "ep_3FJn9bPPldQiddo0BAmk7dnfdMB",
                        "url": "https://partner.example.com/hooks/quote",
                        "description": "primary delivery",
                        "created_at": "2026-06-18T16:58:08.893527Z",
                        "updated_at": "2026-06-18T16:58:08.895052Z",
                        "events": ["quote.executed"]
                      },
                      {
                        "id": "ep_3EZmqB3q9HAemAKQ7UZz2co998J",
                        "url": "https://partner.example.com/hooks/conversions",
                        "description": "conversion delivery",
                        "disabled": true,
                        "created_at": "2026-06-02T10:04:13.854605Z",
                        "updated_at": "2026-06-11T11:54:31.580467Z",
                        "events": ["conversion.withdrawal_completed", "conversion.quote_execution_failed"]
                      }
                    ]
                  }
                },
                "example": {
                  "data": [
                    {
                      "id": "ep_3FJn9bPPldQiddo0BAmk7dnfdMB",
                      "url": "https://partner.example.com/hooks/quote",
                      "description": "primary delivery",
                      "created_at": "2026-06-18T16:58:08.893527Z",
                      "updated_at": "2026-06-18T16:58:08.895052Z",
                      "events": ["quote.executed"]
                    },
                    {
                      "id": "ep_3EZmqB3q9HAemAKQ7UZz2co998J",
                      "url": "https://partner.example.com/hooks/conversions",
                      "description": "conversion delivery",
                      "disabled": true,
                      "created_at": "2026-06-02T10:04:13.854605Z",
                      "updated_at": "2026-06-11T11:54:31.580467Z",
                      "events": ["conversion.withdrawal_completed", "conversion.quote_execution_failed"]
                    }
                  ]
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X GET \"https://api.services.payward.com/v1/webhooks\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": true,
          "idempotentHint": true,
          "destructiveHint": false
        }
      },
      "post": {
        "operationId": "createWebhook",
        "summary": "Register Webhook",
        "tags": ["Webhooks"],
        "description": "Register a new webhook endpoint to receive event notifications from Payward.\n\nWhen you register a webhook, you'll receive a `signing_secret` in the response. This secret\nis used to verify webhook signatures. Store it securely —\nit is only returned once and cannot be retrieved again.\n\nBefore registering a webhook, make sure your callback domain has been allowlisted.\n\nYou must specify at least one event when registering a webhook. You can optionally set `disabled` to create the webhook without sending events immediately.\n\n## URL Requirements\n\n- Must use HTTPS protocol\n- Maximum length: 2048 characters\n- Must be a valid URL format\n- Must have a valid host (not empty)\n- Host cannot be a protocol name (e.g., `http`, `https`, `ftp`, `file`, `mailto`, `ssh`, `git`, `svn`)\n- Path cannot start with `//` (indicates malformed URL)\n- Cannot contain credentials (e.g., `https://user:pass@example.com` is rejected)\n\n### Valid URL Examples\n\n- `https://example.com/webhook`\n- `https://example.com:8443/webhook`\n\n### Invalid URL Examples\n\n- `http://example.com/webhook` (HTTP not allowed)\n- `https://https//example.com` (malformed - host is \"https\")\n- `https://user:pass@example.com/webhook` (credentials not allowed)\n- `invalid-url` (not a valid URL)",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string",
              "format": "uuid",
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "style": "simple",
            "description": "Client-generated UUIDv4 for safe retries. Sent as the `Idempotency-Key` HTTP header. Replayed responses include the `Idempotent-Replayed: true` header."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 2048,
                    "description": "The HTTPS URL where webhook events will be sent. This endpoint must be\npublicly accessible and respond to POST requests.\n",
                    "example": "https://your-domain.com/webhooks/payward"
                  },
                  "description": {
                    "type": "string",
                    "maxLength": 500,
                    "description": "Optional free-form label for the webhook.",
                    "example": "primary delivery"
                  },
                  "events": {
                    "type": "array",
                    "description": "List of event types to subscribe to. At least one event is required.",
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "enum": [
                        "quote.executed",
                        "quote.cancelled",
                        "quote.execution_failed",
                        "user.closed",
                        "user.disabled",
                        "user.verified",
                        "user.verification_failed",
                        "user.verification_needed",
                        "conversion.deposit_completed",
                        "conversion.deposit_failed",
                        "conversion.deposit_held",
                        "conversion.travel_rule_blocked",
                        "conversion.quote_execution_failed",
                        "conversion.withdrawal_completed",
                        "conversion.withdrawal_failed",
                        "transaction.swap",
                        "transaction.price_trigger_swap",
                        "transaction.earn_reward",
                        "transaction.deposit",
                        "transaction.withdrawal",
                        "transaction.transfer",
                        "funds.deposit_received",
                        "funds.deposit_held",
                        "funds.deposit_credited",
                        "funds.deposit_returned",
                        "funds.deposit_failed"
                      ]
                    },
                    "minItems": 1,
                    "maxItems": 100,
                    "example": ["quote.executed"]
                  },
                  "disabled": {
                    "type": "boolean",
                    "default": false,
                    "description": "Create the webhook in a disabled state. Defaults to `false`.",
                    "example": false
                  }
                },
                "required": ["url", "events"]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Webhook registered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Unique identifier for the webhook",
                          "example": "ep_3FJn9bPPldQiddo0BAmk7dnfdMB"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "The registered webhook URL",
                          "example": "https://partner.example.com/hooks/quote"
                        },
                        "description": {
                          "type": "string",
                          "description": "Free-form partner-supplied label for the webhook. Empty when no description was set.",
                          "example": "primary delivery"
                        },
                        "disabled": {
                          "type": "boolean",
                          "description": "Whether the webhook is disabled. Disabled webhooks do not receive events.",
                          "example": true
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "description": "When the webhook was created",
                          "example": "2026-06-18T16:58:08.893527Z"
                        },
                        "updated_at": {
                          "type": "string",
                          "format": "date-time",
                          "description": "When the webhook was last updated",
                          "example": "2026-06-18T16:58:08.895052Z"
                        },
                        "events": {
                          "type": "array",
                          "description": "List of event types this webhook is subscribed to",
                          "maxItems": 100,
                          "uniqueItems": true,
                          "items": {
                            "type": "string",
                            "enum": [
                              "quote.executed",
                              "quote.cancelled",
                              "quote.execution_failed",
                              "user.closed",
                              "user.disabled",
                              "user.verified",
                              "user.verification_failed",
                              "user.verification_needed",
                              "conversion.deposit_completed",
                              "conversion.deposit_failed",
                              "conversion.deposit_held",
                              "conversion.travel_rule_blocked",
                              "conversion.quote_execution_failed",
                              "conversion.withdrawal_completed",
                              "conversion.withdrawal_failed",
                              "transaction.swap",
                              "transaction.price_trigger_swap",
                              "transaction.earn_reward",
                              "transaction.deposit",
                              "transaction.withdrawal",
                              "transaction.transfer",
                              "funds.deposit_received",
                              "funds.deposit_held",
                              "funds.deposit_credited",
                              "funds.deposit_returned",
                              "funds.deposit_failed"
                            ]
                          },
                          "example": ["quote.executed"]
                        },
                        "signing_secret": {
                          "type": "string",
                          "description": "Signing secret for verifying webhook signatures. This value is returned only once when the webhook is created.",
                          "example": "whsec_7nM1q4bV2jKbMZhYa3sAehO9W8r7QZD2"
                        }
                      },
                      "required": ["id", "url", "created_at", "updated_at", "events", "signing_secret"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "id": "ep_3FJn9bPPldQiddo0BAmk7dnfdMB",
                      "url": "https://partner.example.com/hooks/quote",
                      "description": "primary delivery",
                      "created_at": "2026-06-18T16:58:08.893527Z",
                      "updated_at": "2026-06-18T16:58:08.895052Z",
                      "events": ["quote.executed"],
                      "signing_secret": "whsec_7nM1q4bV2jKbMZhYa3sAehO9W8r7QZD2"
                    }
                  }
                },
                "example": {
                  "data": {
                    "id": "ep_3FJn9bPPldQiddo0BAmk7dnfdMB",
                    "url": "https://partner.example.com/hooks/quote",
                    "description": "primary delivery",
                    "created_at": "2026-06-18T16:58:08.893527Z",
                    "updated_at": "2026-06-18T16:58:08.895052Z",
                    "events": ["quote.executed"],
                    "signing_secret": "whsec_7nM1q4bV2jKbMZhYa3sAehO9W8r7QZD2"
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/webhooks\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://partner.example.com/hooks/quote\",\n    \"events\": [\n      \"quote.executed\"\n    ]\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      }
    },
    "/v1/webhooks/{webhook_id}": {
      "get": {
        "operationId": "getWebhook",
        "summary": "Get Webhook",
        "tags": ["Webhooks"],
        "description": "Retrieves a webhook by id.",
        "parameters": [
          {
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "description": "Unique identifier for the webhook",
            "schema": {
              "type": "string",
              "example": "WHTEST-XXXXX-EXAMPLE"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "The requested webhook.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Stable identifier assigned at creation time. Use this in subsequent\nGet/Update/Delete calls.",
                          "type": "string"
                        },
                        "url": {
                          "description": "HTTPS destination URL that the webhook payload will be POSTed to.",
                          "type": "string"
                        },
                        "description": {
                          "description": "Free-form partner-supplied label. Empty when no description was set.",
                          "type": "string"
                        },
                        "disabled": {
                          "description": "When true, the webhook is registered but no events are being delivered.\nFlip to false via UpdateWebhook to resume deliveries.",
                          "type": "boolean"
                        },
                        "created_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        },
                        "updated_at": {
                          "$ref": "#/components/schemas/google.protobuf.Timestamp"
                        },
                        "events": {
                          "description": "Events the webhook is subscribed to. Only these events are delivered\nto the destination URL.",
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "quote.executed",
                              "quote.cancelled",
                              "quote.execution_failed",
                              "user.closed",
                              "user.disabled",
                              "user.verified",
                              "user.verification_failed",
                              "user.verification_needed",
                              "conversion.deposit_completed",
                              "conversion.deposit_failed",
                              "conversion.deposit_held",
                              "conversion.travel_rule_blocked",
                              "conversion.quote_execution_failed",
                              "conversion.withdrawal_completed",
                              "conversion.withdrawal_failed",
                              "transaction.swap",
                              "transaction.price_trigger_swap",
                              "transaction.earn_reward",
                              "transaction.deposit",
                              "transaction.withdrawal",
                              "transaction.transfer",
                              "funds.deposit_received",
                              "funds.deposit_held",
                              "funds.deposit_credited",
                              "funds.deposit_returned",
                              "funds.deposit_failed"
                            ]
                          }
                        }
                      }
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ]
      },
      "patch": {
        "operationId": "updateWebhook",
        "summary": "Update Webhook",
        "tags": ["Webhooks"],
        "description": "Update a webhook configuration.\n\nUse this endpoint to:\n- Update the webhook URL or description\n- Disable or re-enable a webhook without deleting it\n- Update which events the webhook is subscribed to\n\nDisabled webhooks will not receive any events until re-enabled.",
        "parameters": [
          {
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "description": "Unique identifier for the webhook",
            "schema": {
              "type": "string",
              "example": "WHTEST-XXXXX-EXAMPLE"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string",
              "format": "uuid",
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "style": "simple",
            "description": "Client-generated UUIDv4 for safe retries. Sent as the `Idempotency-Key` HTTP header. Replayed responses include the `Idempotent-Replayed: true` header."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "minLength": 8,
                    "maxLength": 2048,
                    "description": "New HTTPS URL where webhook events will be sent. Omit to leave unchanged.",
                    "example": "https://partner.example.com/hooks/quote"
                  },
                  "description": {
                    "type": "string",
                    "maxLength": 500,
                    "description": "New free-form label for the webhook. Omit to leave unchanged; pass an empty string to clear.",
                    "example": "primary delivery"
                  },
                  "events": {
                    "type": "array",
                    "description": "List of event types to subscribe to. This replaces all existing event subscriptions. Empty arrays are treated as omitted.",
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "enum": [
                        "quote.executed",
                        "quote.cancelled",
                        "quote.execution_failed",
                        "user.closed",
                        "user.disabled",
                        "user.verified",
                        "user.verification_failed",
                        "user.verification_needed",
                        "conversion.deposit_completed",
                        "conversion.deposit_failed",
                        "conversion.deposit_held",
                        "conversion.travel_rule_blocked",
                        "conversion.quote_execution_failed",
                        "conversion.withdrawal_completed",
                        "conversion.withdrawal_failed",
                        "transaction.swap",
                        "transaction.price_trigger_swap",
                        "transaction.earn_reward",
                        "transaction.deposit",
                        "transaction.withdrawal",
                        "transaction.transfer",
                        "funds.deposit_received",
                        "funds.deposit_held",
                        "funds.deposit_credited",
                        "funds.deposit_returned",
                        "funds.deposit_failed"
                      ]
                    },
                    "minItems": 0,
                    "maxItems": 100,
                    "example": ["quote.executed"]
                  },
                  "disabled": {
                    "type": "boolean",
                    "description": "Whether the webhook should be disabled",
                    "example": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Unique identifier for the webhook",
                          "example": "ep_3FJn9bPPldQiddo0BAmk7dnfdMB"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri",
                          "description": "The registered webhook URL",
                          "example": "https://partner.example.com/hooks/quote"
                        },
                        "description": {
                          "type": "string",
                          "description": "Free-form partner-supplied label for the webhook. Empty when no description was set.",
                          "example": "primary delivery"
                        },
                        "disabled": {
                          "type": "boolean",
                          "description": "Whether the webhook is disabled. Disabled webhooks do not receive events.",
                          "example": true
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time",
                          "description": "When the webhook was created",
                          "example": "2026-06-18T16:58:08.893527Z"
                        },
                        "updated_at": {
                          "type": "string",
                          "format": "date-time",
                          "description": "When the webhook was last updated",
                          "example": "2026-06-18T16:58:08.895052Z"
                        },
                        "events": {
                          "type": "array",
                          "description": "List of event types this webhook is subscribed to",
                          "maxItems": 100,
                          "uniqueItems": true,
                          "items": {
                            "type": "string",
                            "enum": [
                              "quote.executed",
                              "quote.cancelled",
                              "quote.execution_failed",
                              "user.closed",
                              "user.disabled",
                              "user.verified",
                              "user.verification_failed",
                              "user.verification_needed",
                              "conversion.deposit_completed",
                              "conversion.deposit_failed",
                              "conversion.deposit_held",
                              "conversion.travel_rule_blocked",
                              "conversion.quote_execution_failed",
                              "conversion.withdrawal_completed",
                              "conversion.withdrawal_failed",
                              "transaction.swap",
                              "transaction.price_trigger_swap",
                              "transaction.earn_reward",
                              "transaction.deposit",
                              "transaction.withdrawal",
                              "transaction.transfer",
                              "funds.deposit_received",
                              "funds.deposit_held",
                              "funds.deposit_credited",
                              "funds.deposit_returned",
                              "funds.deposit_failed"
                            ]
                          },
                          "example": ["quote.executed"]
                        }
                      },
                      "required": ["id", "url", "created_at", "updated_at", "events"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "id": "ep_3FJn9bPPldQiddo0BAmk7dnfdMB",
                      "url": "https://partner.example.com/hooks/quote",
                      "description": "primary delivery",
                      "created_at": "2026-06-18T16:58:08.893527Z",
                      "updated_at": "2026-06-18T16:58:08.895052Z",
                      "events": ["quote.executed"]
                    }
                  }
                },
                "example": {
                  "data": {
                    "id": "ep_3FJn9bPPldQiddo0BAmk7dnfdMB",
                    "url": "https://partner.example.com/hooks/quote",
                    "description": "primary delivery",
                    "created_at": "2026-06-18T16:58:08.893527Z",
                    "updated_at": "2026-06-18T16:58:08.895052Z",
                    "events": ["quote.executed"]
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X PATCH \"https://api.services.payward.com/v1/webhooks/ep_3FJn9bPPldQiddo0BAmk7dnfdMB\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"disabled\": false,\n    \"events\": [\n      \"quote.executed\"\n    ]\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        }
      },
      "delete": {
        "operationId": "deleteWebhook",
        "summary": "Delete Webhook",
        "tags": ["Webhooks"],
        "description": "Delete a webhook configuration.\n\nThis permanently removes the webhook and all its event subscriptions.\nNo further events will be delivered to the webhook URL.\n\n**Note:** This action cannot be undone. If you want to temporarily stop\nreceiving events, consider using the **Update Webhook** endpoint to disable\nthe webhook instead.",
        "parameters": [
          {
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "description": "Unique identifier for the webhook",
            "schema": {
              "type": "string",
              "example": "WHTEST-XXXXX-EXAMPLE"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Webhook deleted successfully. No content is returned.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X DELETE \"https://api.services.payward.com/v1/webhooks/whk_01J0M7C0Z9F8YX3GQH8E\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\""
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": true
        }
      }
    },
    "/v1/webhooks/{webhook_id}/attempts": {
      "get": {
        "operationId": "listWebhookAttempts",
        "summary": "List Webhook Attempts",
        "tags": ["Webhooks"],
        "description": "Lists delivery attempts made to this webhook, most recent first.\n\nA delivery attempt is one HTTP POST to the webhook's destination URL.\nBecause deliveries are retried on failure, a single emitted event can\nproduce several attempts against the same webhook: the first is\n`scheduled`, and each subsequent retry is another `scheduled` attempt\nuntil the event is delivered or the retry schedule is exhausted; a\npartner-initiated resend produces a `manual` attempt. Every attempt is\nlisted, so a successful delivery and the failed tries that preceded it\nall appear as separate entries sharing the same `message_id`.",
        "parameters": [
          {
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "description": "Unique identifier for the webhook",
            "schema": {
              "type": "string",
              "example": "WHTEST-XXXXX-EXAMPLE"
            }
          },
          {
            "in": "query",
            "name": "page_size",
            "schema": {
              "description": "Maximum number of attempts to return. Defaults to 20 when omitted.",
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "maximum": 25,
              "default": 20
            },
            "style": "form",
            "example": 20
          },
          {
            "in": "query",
            "name": "page_token",
            "schema": {
              "description": "Opaque token returned by a previous response. Omit to start from the\nmost recent attempt.",
              "type": "string",
              "minLength": 1,
              "maxLength": 256
            },
            "style": "form",
            "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Delivery attempts for the requested page, most recent first. Always\npresent; serialised as an empty array when the webhook has no recorded\nattempts.",
                      "type": "array",
                      "items": {
                        "description": "A single HTTP delivery attempt of one event to one webhook.",
                        "type": "object",
                        "properties": {
                          "id": {
                            "description": "Stable identifier of this attempt.",
                            "type": "string"
                          },
                          "webhook_id": {
                            "description": "Identifier of the webhook the attempt was delivered to. Matches the\n`webhook_id` in the request path.",
                            "type": "string"
                          },
                          "message_id": {
                            "description": "Identifier of the emitted message this attempt tried to deliver. All\nattempts for the same event (the first delivery and any retries) share\nthis value.",
                            "type": "string"
                          },
                          "url": {
                            "description": "Destination URL the attempt was POSTed to. Reflects the webhook's URL\nat the time of the attempt.",
                            "type": "string"
                          },
                          "status": {
                            "description": "Outcome of the attempt.",
                            "type": "string",
                            "enum": ["success", "pending", "failed", "sending", "canceled"]
                          },
                          "response_status_code": {
                            "description": "HTTP status code returned by the destination. `0` when no HTTP\nresponse was received (e.g. a timeout or connection error).",
                            "type": "integer",
                            "format": "int32"
                          },
                          "response_duration_ms": {
                            "description": "Round-trip time of the attempt in milliseconds.",
                            "type": "integer",
                            "format": "int32"
                          },
                          "trigger_type": {
                            "description": "What caused the attempt (a scheduled delivery/retry or a manual resend).",
                            "type": "string",
                            "enum": ["scheduled", "manual"]
                          },
                          "timestamp": {
                            "$ref": "#/components/schemas/google.protobuf.Timestamp"
                          }
                        }
                      }
                    },
                    "next_page_token": {
                      "description": "Opaque token for the next page. Absent when there are no more results.",
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 256
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ]
      }
    },
    "/v1/webhooks/{webhook_id}/secret/rotate": {
      "post": {
        "operationId": "rotateWebhookSecret",
        "summary": "Rotate Webhook Secret",
        "tags": ["Webhooks"],
        "description": "Rotates the webhook's signing secret and returns the new value.\n\nThe previous secret is invalidated; Svix continues to also sign with\nthe old secret for a short grace period so partners can roll the new\nvalue out without dropped deliveries. The new signing secret is\nreturned in plaintext exactly once — partners must persist it and use\nit to verify the signature on inbound webhook deliveries.",
        "parameters": [
          {
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "description": "Unique identifier for the webhook",
            "schema": {
              "type": "string",
              "example": "WHTEST-XXXXX-EXAMPLE"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "description": "Response from RotateWebhookSecret.\n\nThe new signing secret is returned in plaintext exactly once. Partners\nmust persist it before discarding the response; it cannot be re-read\nlater.",
                  "type": "object",
                  "properties": {
                    "data": {
                      "description": "Data envelope returned exactly once after a successful\nRotateWebhookSecret.\n\nDefined as a sibling top-level message rather than a\n`RotateWebhookSecretResponse` nested type because the kgrpc proto build\npipeline does not currently honor `debug_visibility: REDACT` on fields of\nnested messages, which we rely on here to keep `signing_secret` out of\n`Debug` output.",
                      "type": "object",
                      "properties": {
                        "id": {
                          "description": "Identifier of the webhook whose secret was rotated.",
                          "type": "string"
                        },
                        "signing_secret": {
                          "description": "The new HMAC-SHA256 signing secret. Partners use this to verify the\nsignature header on every inbound webhook delivery.",
                          "type": "string"
                        }
                      }
                    }
                  },
                  "required": ["data"]
                }
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ]
      }
    },
    "/v1/webhooks/{webhook_id}/test": {
      "post": {
        "operationId": "sendWebhookTestEvent",
        "summary": "Test Webhook",
        "tags": ["Webhooks"],
        "description": "Send a test event to verify your webhook configuration.\n\nThis endpoint sends a representative event to your configured webhook URL, allowing you to verify that:\n- Your endpoint is reachable\n- Your signature verification is working correctly\n- Your endpoint responds appropriately\n\nThe webhook must be subscribed to the requested event. A successful response means the test event was accepted for delivery.",
        "parameters": [
          {
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "description": "Unique identifier for the webhook",
            "schema": {
              "type": "string",
              "example": "WHTEST-XXXXX-EXAMPLE"
            }
          },
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string",
              "format": "uuid",
              "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "style": "simple",
            "description": "Client-generated UUIDv4 for safe retries. Sent as the `Idempotency-Key` HTTP header. Replayed responses include the `Idempotent-Replayed: true` header."
          }
        ],
        "responses": {
          "200": {
            "description": "Test webhook sent (check result for delivery status)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "message_id": {
                          "type": "string",
                          "description": "Identifier of the test message that was accepted for delivery.",
                          "example": "msg_2eZwQqkM3xT5J8vY1bDnA7CfWp0"
                        },
                        "event": {
                          "type": "string",
                          "description": "Event type of the test message.",
                          "enum": [
                            "quote.executed",
                            "quote.cancelled",
                            "quote.execution_failed",
                            "user.closed",
                            "user.disabled",
                            "user.verified",
                            "user.verification_failed",
                            "user.verification_needed",
                            "conversion.deposit_completed",
                            "conversion.deposit_failed",
                            "conversion.deposit_held",
                            "conversion.travel_rule_blocked",
                            "conversion.quote_execution_failed",
                            "conversion.withdrawal_completed",
                            "conversion.withdrawal_failed",
                            "transaction.swap",
                            "transaction.price_trigger_swap",
                            "transaction.earn_reward",
                            "transaction.deposit",
                            "transaction.withdrawal",
                            "transaction.transfer",
                            "funds.deposit_received",
                            "funds.deposit_held",
                            "funds.deposit_credited",
                            "funds.deposit_returned",
                            "funds.deposit_failed"
                          ],
                          "example": "quote.executed"
                        }
                      },
                      "required": ["message_id", "event"]
                    }
                  },
                  "required": ["data"],
                  "example": {
                    "data": {
                      "message_id": "msg_2eZwQqkM3xT5J8vY1bDnA7CfWp0",
                      "event": "quote.executed"
                    }
                  }
                },
                "example": {
                  "data": {
                    "message_id": "msg_2eZwQqkM3xT5J8vY1bDnA7CfWp0",
                    "event": "quote.executed"
                  }
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "400": {
            "description": "Validation error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookNotFoundErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "408": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededErrorResponse"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnimplementedError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          },
          "504": {
            "description": "Deadline exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                }
              }
            },
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            }
          }
        },
        "security": [
          {
            "ApiKey": [],
            "ApiNonce": [],
            "ApiSign": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "bash",
            "label": "curl",
            "source": "curl -X POST \"https://api.services.payward.com/v1/webhooks/ep_3FJn9bPPldQiddo0BAmk7dnfdMB/test\" \\\n  -H \"API-Key: $PWS_API_KEY\" \\\n  -H \"API-Nonce: $PWS_API_NONCE\" \\\n  -H \"API-Sign: $PWS_API_SIGN\" \\\n  -H \"Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"event\": \"quote.executed\"\n  }'"
          }
        ],
        "x-speakeasy-mcp": {
          "readOnlyHint": false,
          "idempotentHint": false,
          "destructiveHint": false
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "event": {
                    "type": "string",
                    "description": "Event type to send as a test.",
                    "enum": [
                      "quote.executed",
                      "quote.cancelled",
                      "quote.execution_failed",
                      "user.closed",
                      "user.disabled",
                      "user.verified",
                      "user.verification_failed",
                      "user.verification_needed",
                      "conversion.deposit_completed",
                      "conversion.deposit_failed",
                      "conversion.deposit_held",
                      "conversion.travel_rule_blocked",
                      "conversion.quote_execution_failed",
                      "conversion.withdrawal_completed",
                      "conversion.withdrawal_failed",
                      "transaction.swap",
                      "transaction.price_trigger_swap",
                      "transaction.earn_reward",
                      "transaction.deposit",
                      "transaction.withdrawal",
                      "transaction.transfer",
                      "funds.deposit_received",
                      "funds.deposit_held",
                      "funds.deposit_credited",
                      "funds.deposit_returned",
                      "funds.deposit_failed"
                    ],
                    "example": "quote.executed"
                  }
                },
                "required": ["event"]
              },
              "example": {
                "event": "quote.executed"
              }
            }
          }
        }
      }
    },
    "/v1/transfers": {
      "post": {
        "operationId": "createTransfer",
        "tags": ["Funds"],
        "summary": "Create transfer",
        "security": [
          {
            "ApiKey": [],
            "ApiSign": [],
            "ApiNonce": []
          }
        ],
        "description": "Creates a transfer between accounts in the authenticated caller's program.\n\nThe returned `transfer_id` is the originating reference for the corresponding Portfolio transaction. Once that transaction is visible, retrieve it with `GET /v1/accounts/{account_id}/portfolio/transactions` using `reference.kind=transfer` and `reference.id` equal to this `transfer_id`. Use the `from` account from this request as `account_id` when retrieving the initiating account's transaction.\n\nTransfer creation and Portfolio transaction visibility are asynchronous boundaries. A response with `status=complete` confirms the create operation's current outcome, but the corresponding Portfolio transaction may not be visible immediately. Discover it by polling Portfolio with the transfer type and an appropriate time range; the Portfolio transaction can first have `status=in_progress` before reaching `successful` or `failed`.\n\nThis operation is not idempotent. If a request times out or otherwise has an unknown outcome, do not automatically retry it because the transfer may already have been created. First reconcile the source account's Portfolio transactions or contact Payward Services support.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "description": "Request to create an account-funded transfer.",
                "type": "object",
                "required": ["from", "to", "asset", "amount"],
                "properties": {
                  "from": {
                    "description": "Public account ID to debit.",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/AccountId"
                      }
                    ]
                  },
                  "to": {
                    "description": "Public account ID to credit.",
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/AccountId"
                      }
                    ]
                  },
                  "asset": {
                    "description": "Asset ticker symbol to transfer. Currency assets and tokenized assets such as xStocks are supported when eligible for transfers.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 16
                  },
                  "amount": {
                    "description": "Decimal amount represented as a string to preserve precision.",
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 64,
                    "pattern": "^[0-9]+(\\.[0-9]+)?$"
                  }
                }
              },
              "examples": {
                "account-recipient": {
                  "summary": "Transfer a currency asset to an account",
                  "value": {
                    "from": "WVSD33HRMGSZUBM7",
                    "to": "WNPY3PJZYD4L9E7B",
                    "asset": "USD",
                    "amount": "25.50"
                  }
                },
                "xstock-recipient": {
                  "summary": "Transfer an xStock to an account",
                  "value": {
                    "from": "WVSD33HRMGSZUBM7",
                    "to": "WNPY3PJZYD4L9E7B",
                    "asset": "TSLAx",
                    "amount": "1.00"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Transfer created.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateTransferEnvelope"
                },
                "examples": {
                  "created": {
                    "summary": "Transfer accepted",
                    "value": {
                      "data": {
                        "transfer_id": "TRYCMN7-WXKJM-F47YIM",
                        "status": "pending"
                      }
                    }
                  },
                  "completed": {
                    "summary": "Transfer completed",
                    "value": {
                      "data": {
                        "transfer_id": "TRYCMN7-WXKJM-F47YIM",
                        "status": "complete"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Request validation failed or the transfer could not be processed.",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestError"
                },
                "examples": {
                  "invalid-transfer": {
                    "summary": "Transfer request cannot be processed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "transfer",
                            "message": "Transfer request cannot be processed"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  },
                  "self-transfer": {
                    "summary": "Source and recipient are the same account",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "to",
                            "message": "Transfers from and to the same account are not supported"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  },
                  "unsupported-asset": {
                    "summary": "Unsupported asset",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "asset",
                            "message": "Unsupported asset"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  },
                  "insufficient-balance": {
                    "summary": "Insufficient balance",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "causes": [
                          {
                            "field": "amount",
                            "message": "Insufficient balance"
                          }
                        ],
                        "status": 400,
                        "code": "bad_request"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthenticatedError"
                },
                "examples": {
                  "authentication-failed": {
                    "summary": "Authentication failed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unauthenticated",
                        "status": 401
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                },
                "examples": {
                  "caller-is-not-allowed": {
                    "summary": "Caller is not allowed",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "forbidden",
                        "status": 403
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExhaustedError"
                },
                "examples": {
                  "rate-limit-exceeded": {
                    "summary": "Rate limit exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "resource_exhausted",
                        "status": 429
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                },
                "examples": {
                  "internal-error": {
                    "summary": "Internal server error",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "internal",
                        "status": 500
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service unavailable",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                },
                "examples": {
                  "service-unavailable": {
                    "summary": "Service unavailable",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "unavailable",
                        "status": 503
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Request deadline exceeded",
            "headers": {
              "Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Strict-Transport-Security": {
                "$ref": "#/components/headers/StrictTransportSecurity"
              },
              "X-Content-Type-Options": {
                "$ref": "#/components/headers/XContentTypeOptions"
              },
              "Content-Security-Policy": {
                "$ref": "#/components/headers/ContentSecurityPolicy"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/CacheControl"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeadlineExceededError"
                },
                "examples": {
                  "request-deadline-exceeded": {
                    "summary": "Request deadline exceeded",
                    "value": {
                      "error": {
                        "type": "funding_error",
                        "instance": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b",
                        "code": "deadline_exceeded",
                        "status": 504
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "webhooks": {
    "quote.executed": {
      "post": {
        "summary": "Quote Executed",
        "tags": ["Webhooks"],
        "operationId": "quoteExecutedEvent",
        "description": "Quote successfully executed against the partner account.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/QuoteExecutedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["quote.executed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "quote.executed",
                "quote_id": "BQEXAMPLE1234567",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "executed_at": "2025-01-01T00:00:01+00:00"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "quote.cancelled": {
      "post": {
        "summary": "Quote Cancelled",
        "tags": ["Webhooks"],
        "operationId": "quoteCancelledEvent",
        "description": "Quote cancelled before execution.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/QuoteCancelledPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["quote.cancelled"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "quote.cancelled",
                "quote_id": "BQEXAMPLE1234567",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "quote.execution_failed": {
      "post": {
        "summary": "Quote Execution Failed",
        "tags": ["Webhooks"],
        "operationId": "quoteExecutionFailedEvent",
        "description": "Quote execution attempted but failed.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/QuoteExecutionFailedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["quote.execution_failed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "quote.execution_failed",
                "quote_id": "BQEXAMPLE1234567",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "user.verified": {
      "post": {
        "summary": "User Verified",
        "tags": ["Webhooks"],
        "operationId": "userVerifiedEvent",
        "description": "The user completed verification.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserVerifiedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["user.verified"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "user.verified",
                "user_id": "AA55 N84G QOIR A67A",
                "timestamp": "2025-01-01T00:00:01+00:00"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "user.verification_needed": {
      "post": {
        "summary": "User Verification Needed",
        "tags": ["Webhooks"],
        "operationId": "userVerificationNeededEvent",
        "description": "The user needs to complete verification.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserVerificationNeededPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["user.verification_needed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "user.verification_needed",
                "user_id": "AA55 N84G QOIR A67A"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "user.verification_failed": {
      "post": {
        "summary": "User Verification Failed",
        "tags": ["Webhooks"],
        "operationId": "userVerificationFailedEvent",
        "description": "The user's verification submission was rejected.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserVerificationFailedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["user.verification_failed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "user.verification_failed",
                "user_id": "AA55 N84G QOIR A67A",
                "verification_id": "PVB4JCW-JPFXQ-AGNISI",
                "timestamp": "2025-01-01T00:00:01+00:00"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "user.disabled": {
      "post": {
        "summary": "User Disabled",
        "tags": ["Webhooks"],
        "operationId": "userDisabledEvent",
        "description": "The user's account became disabled.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserDisabledPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["user.disabled"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "user.disabled",
                "user_id": "AA55 N84G QOIR A67A",
                "timestamp": "2025-01-01T00:00:01+00:00"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "user.closed": {
      "post": {
        "summary": "User Closed",
        "tags": ["Webhooks"],
        "operationId": "userClosedEvent",
        "description": "The user's account was closed.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserClosedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["user.closed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "user.closed",
                "user_id": "AA55 N84G QOIR A67A",
                "timestamp": "2025-01-01T00:00:01+00:00"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "conversion.deposit_completed": {
      "post": {
        "summary": "Conversion Deposit Completed",
        "tags": ["Webhooks"],
        "operationId": "conversionDepositCompletedEvent",
        "description": "Inbound funds were credited for a conversion transaction.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ConversionLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["conversion.deposit_completed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "conversion.deposit_completed",
                "transaction_id": "87654321-4321-4321-4321-210987654321",
                "conversion_id": "12345678-1234-1234-1234-123456789012",
                "user_id": "AA55N84GQOIRA67A",
                "status": "converting",
                "observed_at": "2025-01-01T00:00:01+00:00",
                "chain_references": {
                  "deposit_txid": "deposit-123"
                },
                "deposit_reference": "INV-42",
                "deposit_amount": "1000.00",
                "deposit_currency": "EUR",
                "network": "sepa"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "conversion.deposit_held": {
      "post": {
        "summary": "Conversion Deposit Held",
        "tags": ["Webhooks"],
        "operationId": "conversionDepositHeldEvent",
        "description": "The inbound funding leg is held pending review for a conversion transaction.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ConversionLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["conversion.deposit_held"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "conversion.deposit_held",
                "transaction_id": "87654321-4321-4321-4321-210987654321",
                "conversion_id": "12345678-1234-1234-1234-123456789012",
                "user_id": "AA55N84GQOIRA67A",
                "status": "held",
                "observed_at": "2025-01-01T00:00:01+00:00",
                "chain_references": {
                  "deposit_txid": "deposit-123"
                },
                "deposit_amount": "1000.00",
                "deposit_currency": "EUR"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "conversion.deposit_failed": {
      "post": {
        "summary": "Conversion Deposit Failed",
        "tags": ["Webhooks"],
        "operationId": "conversionDepositFailedEvent",
        "description": "The inbound funding leg failed for a conversion transaction.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ConversionLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["conversion.deposit_failed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "conversion.deposit_failed",
                "transaction_id": "87654321-4321-4321-4321-210987654321",
                "conversion_id": "12345678-1234-1234-1234-123456789012",
                "user_id": "AA55N84GQOIRA67A",
                "status": "failed",
                "observed_at": "2025-01-01T00:00:01+00:00",
                "chain_references": {
                  "deposit_txid": "deposit-123"
                },
                "error_code": "amount_too_small",
                "deposit_amount": "0.01",
                "deposit_currency": "EUR"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "conversion.withdrawal_completed": {
      "post": {
        "summary": "Conversion Withdrawal Completed",
        "tags": ["Webhooks"],
        "operationId": "conversionWithdrawalCompletedEvent",
        "description": "Outbound settlement completed for a conversion transaction.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ConversionLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["conversion.withdrawal_completed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "conversion.withdrawal_completed",
                "transaction_id": "87654321-4321-4321-4321-210987654321",
                "conversion_id": "12345678-1234-1234-1234-123456789012",
                "user_id": "AA55N84GQOIRA67A",
                "status": "completed",
                "observed_at": "2025-01-01T00:00:01+00:00",
                "chain_references": {
                  "deposit_txid": "deposit-123",
                  "withdraw_txid": "withdraw-456",
                  "blockchain_transaction_id": "0xabc123"
                },
                "withdrawal_amount": "0.015",
                "withdrawal_currency": "BTC",
                "destination_address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
                "network": "bitcoin"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "conversion.withdrawal_failed": {
      "post": {
        "summary": "Conversion Withdrawal Failed",
        "tags": ["Webhooks"],
        "operationId": "conversionWithdrawalFailedEvent",
        "description": "The outbound settlement leg failed for a conversion transaction.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ConversionLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["conversion.withdrawal_failed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "conversion.withdrawal_failed",
                "transaction_id": "87654321-4321-4321-4321-210987654321",
                "conversion_id": "12345678-1234-1234-1234-123456789012",
                "user_id": "AA55N84GQOIRA67A",
                "status": "failed",
                "observed_at": "2025-01-01T00:00:01+00:00",
                "chain_references": {
                  "deposit_txid": "deposit-123",
                  "withdraw_txid": "withdraw-456"
                },
                "error_code": "destination_rejected",
                "withdrawal_amount": "0.015",
                "withdrawal_currency": "BTC",
                "destination_address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "conversion.quote_execution_failed": {
      "post": {
        "summary": "Conversion Quote Execution Failed",
        "tags": ["Webhooks"],
        "operationId": "conversionQuoteExecutionFailedEvent",
        "description": "Quote creation or execution failed for a pre-quote conversion transaction.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ConversionLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["conversion.quote_execution_failed"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "conversion.quote_execution_failed",
                "transaction_id": "87654321-4321-4321-4321-210987654321",
                "conversion_id": "12345678-1234-1234-1234-123456789012",
                "user_id": "AA55N84GQOIRA67A",
                "status": "failed",
                "observed_at": "2025-01-01T00:00:01+00:00",
                "chain_references": {},
                "error_code": "quote_expired",
                "source_amount": "1000.00",
                "source_currency": "EUR",
                "destination_currency": "BTC"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "conversion.travel_rule_blocked": {
      "post": {
        "summary": "Conversion Travel Rule Blocked",
        "tags": ["Webhooks"],
        "operationId": "conversionTravelRuleBlockedEvent",
        "description": "A pre-trade Travel Rule check blocked the conversion before any quote execution was attempted. Either the destination wallet requires an ownership verification that has not been satisfied, or the check could not be evaluated because mandatory information is missing; the specific cause is in `error_code`.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ConversionLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["conversion.travel_rule_blocked"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "conversion.travel_rule_blocked",
                "transaction_id": "87654321-4321-4321-4321-210987654321",
                "conversion_id": "12345678-1234-1234-1234-123456789012",
                "user_id": "AA55N84GQOIRA67A",
                "status": "failed",
                "observed_at": "2025-01-01T00:00:01+00:00",
                "chain_references": {},
                "error_code": "travel_rule_data_missing",
                "source_amount": "1000.00",
                "source_currency": "EUR",
                "destination_currency": "BTC"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "transaction.swap": {
      "post": {
        "summary": "Portfolio Transaction Swap",
        "tags": ["Webhooks"],
        "operationId": "transactionSwapEvent",
        "description": "A Portfolio swap transaction was created or updated. Use the Portfolio Transactions endpoint to retrieve the complete ledger entry.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SwapTransactionChangedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["transaction.swap"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "transaction.swap",
                "transaction_id": "TXEXAMPLE1234567",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "timestamp": "2025-01-01T00:00:01+00:00",
                "status": "successful",
                "quote_id": "BQEXAMPLE1234567"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "transaction.price_trigger_swap": {
      "post": {
        "summary": "Portfolio Transaction Price Trigger Swap",
        "tags": ["Webhooks"],
        "operationId": "transactionPriceTriggerSwapEvent",
        "description": "A Portfolio price trigger swap transaction was created or updated. Use the Portfolio Transactions endpoint to retrieve the complete ledger entry.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PriceTriggerSwapTransactionChangedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["transaction.price_trigger_swap"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "transaction.price_trigger_swap",
                "transaction_id": "TXEXAMPLE1234567",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "timestamp": "2025-01-01T00:00:01+00:00",
                "status": "successful",
                "quote_id": "BQEXAMPLE1234567"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "transaction.earn_reward": {
      "post": {
        "summary": "Portfolio Transaction Earn Reward",
        "tags": ["Webhooks"],
        "operationId": "transactionEarnRewardEvent",
        "description": "A Portfolio earn reward transaction was created or updated. Use the Portfolio Transactions endpoint to retrieve the complete ledger entry.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/EarnRewardTransactionChangedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["transaction.earn_reward"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "transaction.earn_reward",
                "transaction_id": "TXEXAMPLE1234567",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "timestamp": "2025-01-01T00:00:01+00:00",
                "status": "successful",
                "strategy_id": "STRATEGY-EXAMPLE",
                "reward_id": "REWARD-EXAMPLE"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "transaction.deposit": {
      "post": {
        "summary": "Portfolio Transaction Deposit",
        "tags": ["Webhooks"],
        "operationId": "transactionDepositEvent",
        "description": "A Portfolio deposit transaction was created or updated. Use the Portfolio Transactions endpoint to retrieve the complete ledger entry.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DepositTransactionChangedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["transaction.deposit"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "transaction.deposit",
                "transaction_id": "TXEXAMPLE1234567",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "timestamp": "2025-01-01T00:00:01+00:00",
                "status": "successful",
                "funding_reference": "FTEXAMPLE1234567",
                "crypto_transaction_id": "0xabc123"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "transaction.withdrawal": {
      "post": {
        "summary": "Portfolio Transaction Withdrawal",
        "tags": ["Webhooks"],
        "operationId": "transactionWithdrawalEvent",
        "description": "A Portfolio withdrawal transaction was created or updated. Use the Portfolio Transactions endpoint to retrieve the complete ledger entry.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WithdrawalTransactionChangedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["transaction.withdrawal"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "transaction.withdrawal",
                "transaction_id": "TXEXAMPLE1234567",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "timestamp": "2025-01-01T00:00:01+00:00",
                "status": "in_progress",
                "funding_reference": "FTEXAMPLE1234567"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "transaction.transfer": {
      "post": {
        "summary": "Portfolio Transaction Transfer",
        "tags": ["Webhooks"],
        "operationId": "transactionTransferEvent",
        "description": "A Portfolio transfer transaction was created or updated. Use the Portfolio Transactions endpoint to retrieve the complete ledger entry.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TransferTransactionChangedPayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["transaction.transfer"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "transaction.transfer",
                "transaction_id": "TXEXAMPLE1234567",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "timestamp": "2025-01-01T00:00:01+00:00",
                "status": "in_progress",
                "transfer_id": "TFEXAMPLE1234567"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "funds.deposit_received": {
      "post": {
        "summary": "Funds Deposit Received",
        "tags": ["Webhooks"],
        "operationId": "fundsDepositReceivedEvent",
        "description": "A deposit was received and is awaiting confirmations or checks.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/FundsDepositLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["funds.deposit_received"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "funds.deposit_received",
                "transaction_id": "FRABCDEF123456",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "amount": {
                  "asset": "USD",
                  "value": "100.00"
                },
                "fee": {
                  "asset": "USD",
                  "value": "0"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "funds.deposit_held": {
      "post": {
        "summary": "Funds Deposit Held",
        "tags": ["Webhooks"],
        "operationId": "fundsDepositHeldEvent",
        "description": "A deposit is held pending review or additional checks.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/FundsDepositLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["funds.deposit_held"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "funds.deposit_held",
                "transaction_id": "FRABCDEF123456",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "amount": {
                  "asset": "USD",
                  "value": "100.00"
                },
                "fee": {
                  "asset": "USD",
                  "value": "0"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "funds.deposit_credited": {
      "post": {
        "summary": "Funds Deposit Credited",
        "tags": ["Webhooks"],
        "operationId": "fundsDepositCreditedEvent",
        "description": "A deposit was credited and can now be used.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/FundsDepositLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["funds.deposit_credited"],
                        "description": "Event type discriminator."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "funds.deposit_credited",
                "transaction_id": "FRABCDEF123456",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "amount": {
                  "asset": "USD",
                  "value": "100.00"
                },
                "fee": {
                  "asset": "USD",
                  "value": "0"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "funds.deposit_returned": {
      "post": {
        "summary": "Funds Deposit Returned",
        "tags": ["Webhooks"],
        "operationId": "fundsDepositReturnedEvent",
        "description": "A deposit was returned to its source.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/FundsDepositLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type", "reason"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["funds.deposit_returned"],
                        "description": "Event type discriminator."
                      },
                      "reason": {
                        "type": "string",
                        "enum": [
                          "account_details_mismatch",
                          "limit_exceeded",
                          "duplicate",
                          "account_restricted",
                          "other"
                        ],
                        "description": "Partner-safe reason why the deposit was returned."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "funds.deposit_returned",
                "transaction_id": "FRABCDEF123456",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "amount": {
                  "asset": "USD",
                  "value": "100.00"
                },
                "fee": {
                  "asset": "USD",
                  "value": "0"
                },
                "reason": "account_details_mismatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    },
    "funds.deposit_failed": {
      "post": {
        "summary": "Funds Deposit Failed",
        "tags": ["Webhooks"],
        "operationId": "fundsDepositFailedEvent",
        "description": "A deposit failed and will not be credited.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/FundsDepositLifecyclePayload"
                  },
                  {
                    "type": "object",
                    "required": ["type", "reason"],
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": ["funds.deposit_failed"],
                        "description": "Event type discriminator."
                      },
                      "reason": {
                        "type": "string",
                        "enum": [
                          "account_details_mismatch",
                          "limit_exceeded",
                          "duplicate",
                          "account_restricted",
                          "other"
                        ],
                        "description": "Partner-safe reason why the deposit failed."
                      }
                    }
                  }
                ]
              },
              "example": {
                "type": "funds.deposit_failed",
                "transaction_id": "FRABCDEF123456",
                "user_id": "AA55 N84G QOIR A67A",
                "account_id": "WCQY T95Y CUL2 A7NX",
                "amount": {
                  "asset": "USD",
                  "value": "100.00"
                },
                "fee": {
                  "asset": "USD",
                  "value": "0"
                },
                "reason": "duplicate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Return any 2xx status to acknowledge receipt."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "google.protobuf.Timestamp": {
        "description": "RFC 3339 timestamp.",
        "type": "string",
        "format": "date-time"
      },
      "Violation": {
        "description": "A single rule violation surfaced by the request validator or a handler.",
        "type": "object",
        "properties": {
          "field": {
            "description": "Dot-notation path to the offending request field (e.g. \"from.amount\").",
            "type": "string"
          },
          "message": {
            "description": "Human-readable description of the rule that was violated. When the\nrule is \"value must be one of ...\", the accepted values are inlined\ninto this string.",
            "type": "string"
          }
        }
      },
      "ExecuteQuoteResult": {
        "description": "Result of triggering execution of a quote.",
        "type": "object",
        "properties": {
          "id": {
            "description": "ID of the quote that was executed.",
            "type": "string"
          },
          "status": {
            "description": "Status after execution was triggered (will be executing on success).",
            "type": "string",
            "enum": ["offered", "executing", "executed", "expired", "failed", "pending"]
          },
          "executed_at": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        }
      },
      "AssetRef": {
        "description": "Reference to an asset by its ticker symbol and classification.",
        "type": "object",
        "properties": {
          "symbol": {
            "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
            "type": "string"
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "equity", "xstock"]
          }
        },
        "required": ["symbol", "type"]
      },
      "AssetRefResponse": {
        "description": "Reference to an asset by its ticker symbol and classification, as returned in responses. Includes the human-readable asset `name`.",
        "type": "object",
        "properties": {
          "symbol": {
            "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
            "type": "string"
          },
          "name": {
            "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
            "type": ["string", "null"]
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "equity", "xstock"]
          }
        },
        "required": ["symbol", "type"]
      },
      "AssetAmount": {
        "description": "An asset and an amount denominated in that asset.",
        "type": "object",
        "properties": {
          "symbol": {
            "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
            "type": "string"
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "xstock"]
          },
          "amount": {
            "description": "Decimal amount as a string to preserve precision.",
            "type": "string",
            "format": "decimal128"
          }
        },
        "required": ["symbol", "type"]
      },
      "AssetAmountResponse": {
        "description": "An asset and an amount denominated in that asset, as returned in responses. Includes the human-readable asset `name`.",
        "type": "object",
        "properties": {
          "symbol": {
            "description": "Asset ticker symbol (e.g. \"BTC\", \"USD\", \"TSLAx\").",
            "type": "string"
          },
          "name": {
            "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
            "type": ["string", "null"]
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "xstock"]
          },
          "amount": {
            "description": "Decimal amount as a string to preserve precision.",
            "type": "string",
            "format": "decimal128"
          }
        },
        "required": ["symbol", "type"]
      },
      "Fee": {
        "description": "A single fee charged against a quote.",
        "type": "object",
        "properties": {
          "symbol": {
            "description": "Asset ticker the fee is denominated in (e.g. \"USD\").",
            "type": "string"
          },
          "name": {
            "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
            "type": ["string", "null"]
          },
          "type": {
            "description": "Classification of the fee asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "xstock"]
          },
          "amount": {
            "description": "Fee amount as a decimal string.",
            "type": "string",
            "format": "decimal128"
          }
        },
        "required": ["symbol", "type", "amount"]
      },
      "PartnerFee": {
        "description": "Partner-configured fee applied on top of the underlying execution price. Request-only — never returned in response payloads.",
        "type": "object",
        "properties": {
          "bps": {
            "description": "Fee in basis points (1 bps = 0.01%).",
            "type": "integer",
            "minimum": 0,
            "maximum": 10000,
            "example": 50
          }
        },
        "required": ["bps"]
      },
      "Fees": {
        "description": "Breakdown of all fees charged for a quote.",
        "type": "object",
        "properties": {
          "trade": {
            "$ref": "#/components/schemas/Fee"
          }
        }
      },
      "Rate": {
        "description": "Exchange rate applied to a quote.",
        "type": "object",
        "properties": {
          "base": {
            "description": "Base asset of the rate pair.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRefResponse"
              }
            ]
          },
          "quote": {
            "description": "Quote asset of the rate pair.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRefResponse"
              }
            ]
          },
          "price": {
            "description": "Price of one unit of the base asset denominated in the quote asset.",
            "type": "string",
            "format": "decimal128"
          }
        },
        "required": ["base", "quote", "price"]
      },
      "Quote": {
        "description": "A swap quote.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Unique identifier for this quote.",
            "type": "string"
          },
          "status": {
            "description": "Current lifecycle status of the quote.",
            "type": "string",
            "enum": ["offered", "executing", "executed", "expired", "failed", "pending"]
          },
          "expires_at": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "from": {
            "description": "Source asset and amount for the trade.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetAmountResponse"
              }
            ]
          },
          "to": {
            "description": "Destination asset and amount for the trade.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetAmountResponse"
              }
            ]
          },
          "fees": {
            "$ref": "#/components/schemas/Fees"
          },
          "rate": {
            "$ref": "#/components/schemas/Rate"
          }
        }
      },
      "Asset": {
        "description": "A tradable asset.",
        "type": "object",
        "properties": {
          "symbol": {
            "description": "Short ticker symbol (e.g. \"BTC\", \"AAPL\").",
            "type": "string",
            "maxLength": 32
          },
          "full_name": {
            "description": "Full display name (e.g. \"Bitcoin\", \"Apple Inc\").",
            "type": "string",
            "maxLength": 256
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "xstock"]
          },
          "trading_status": {
            "description": "Trading availability status (e.g. \"tradable\").",
            "type": "string",
            "maxLength": 32
          },
          "decimals": {
            "description": "Number of decimal places supported for this asset.",
            "type": "integer",
            "format": "int32"
          },
          "disabledAgainst": {
            "description": "Tickers of assets this asset cannot be traded against. Quote requests pairing this asset with any listed counter-asset are rejected.",
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 32
            }
          }
        }
      },
      "PaymentDestination": {
        "description": "Destination of a payment. References a previously registered external account (bank account) by ID.",
        "type": "object",
        "properties": {
          "account": {
            "description": "Identifier of the registered external bank account to credit. The account must be in `verified` state and denominated in the same currency as `from.asset`.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          }
        },
        "required": ["account"]
      },
      "Beneficiary": {
        "description": "Resolved beneficiary details for the destination external account, returned on payment responses. Derived from the external account record at the time the payment was created.",
        "type": "object",
        "properties": {
          "name": {
            "description": "Legal name of the account holder.",
            "type": "string"
          },
          "bank_name": {
            "description": "Name of the beneficiary's bank. May be absent for rails that do not expose it.",
            "type": ["string", "null"]
          },
          "country": {
            "description": "ISO 3166-1 alpha-2 country code of the beneficiary bank.",
            "type": "string",
            "minLength": 2,
            "maxLength": 2
          }
        }
      },
      "PaymentFee": {
        "description": "Fee charged on a payment.",
        "type": "object",
        "properties": {
          "amount": {
            "description": "Fee amount as a decimal string.",
            "type": "string"
          },
          "asset": {
            "description": "Asset ticker the fee is denominated in.",
            "type": "string"
          }
        }
      },
      "Address": {
        "description": "A postal address.",
        "type": "object",
        "properties": {
          "line1": {
            "description": "Street address line 1. Required.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "line2": {
            "description": "Optional street address line 2.",
            "type": ["string", "null"],
            "maxLength": 128
          },
          "city": {
            "description": "City. Required.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "region": {
            "description": "State, province, or region. Required in some jurisdictions (e.g. US states).",
            "type": ["string", "null"],
            "maxLength": 64
          },
          "postal_code": {
            "description": "Postal / ZIP code. Required.",
            "type": "string",
            "minLength": 1,
            "maxLength": 16
          },
          "country": {
            "description": "ISO 3166-1 alpha-2 country code. Required.",
            "type": "string",
            "minLength": 2,
            "maxLength": 2
          }
        },
        "required": ["line1", "city", "postal_code", "country"]
      },
      "ExternalAccountBeneficiary": {
        "description": "The legal owner of the external bank account.",
        "type": "object",
        "properties": {
          "type": {
            "description": "Whether the beneficiary is an individual or a legal entity.",
            "type": "string",
            "enum": ["individual", "business"]
          },
          "name": {
            "description": "Legal name of the beneficiary. For businesses, the registered legal entity name; for individuals, the full name as it appears on the bank account.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "address": {
            "$ref": "#/components/schemas/Address"
          }
        },
        "required": ["type", "name", "address"]
      },
      "IbanIdentifier": {
        "description": "Bank identifier for IBAN-based accounts (primarily SEPA-region and some other countries that use IBAN). Supports SEPA and SEPA Instant rails.",
        "type": "object",
        "properties": {
          "type": {
            "description": "Discriminator. Always `iban`.",
            "type": "string",
            "enum": ["iban"]
          },
          "iban": {
            "description": "International Bank Account Number. Validated for checksum and format. Up to 34 characters.",
            "type": "string",
            "minLength": 15,
            "maxLength": 34,
            "pattern": "^[A-Z]{2}[0-9]{2}[A-Z0-9]+$"
          },
          "bic": {
            "description": "Bank Identifier Code (SWIFT code). Optional for SEPA transfers to most IBAN-only countries; required for some non-SEPA IBAN countries.",
            "type": ["string", "null"],
            "minLength": 8,
            "maxLength": 11,
            "pattern": "^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$"
          }
        },
        "required": ["type", "iban"]
      },
      "UsBankAccountIdentifier": {
        "description": "Bank identifier for US domestic accounts. Supports ACH and domestic Fedwire rails.",
        "type": "object",
        "properties": {
          "type": {
            "description": "Discriminator. Always `us_bank_account`.",
            "type": "string",
            "enum": ["us_bank_account"]
          },
          "account_number": {
            "description": "US bank account number. Typically 4–17 digits.",
            "type": "string",
            "minLength": 4,
            "maxLength": 17,
            "pattern": "^[0-9]+$"
          },
          "routing_number": {
            "description": "ABA routing transit number. Nine digits; validated against the ABA checksum.",
            "type": "string",
            "minLength": 9,
            "maxLength": 9,
            "pattern": "^[0-9]{9}$"
          },
          "account_type": {
            "description": "Type of US bank account.",
            "type": "string",
            "enum": ["checking", "savings"]
          }
        },
        "required": ["type", "account_number", "routing_number", "account_type"]
      },
      "SwiftIdentifier": {
        "description": "Bank identifier for international wire transfers routed over SWIFT. Used when no domestic-rail identifier applies (non-SEPA, non-US).",
        "type": "object",
        "properties": {
          "type": {
            "description": "Discriminator. Always `swift`.",
            "type": "string",
            "enum": ["swift"]
          },
          "account_number": {
            "description": "Beneficiary's bank account number or IBAN.",
            "type": "string",
            "minLength": 4,
            "maxLength": 64
          },
          "bic": {
            "description": "SWIFT BIC of the beneficiary bank.",
            "type": "string",
            "minLength": 8,
            "maxLength": 11,
            "pattern": "^[A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3})?$"
          },
          "bank_name": {
            "description": "Name of the beneficiary bank.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "bank_address": {
            "$ref": "#/components/schemas/Address"
          }
        },
        "required": ["type", "account_number", "bic", "bank_name"]
      },
      "ExternalAccountIdentifier": {
        "description": "Bank identifier for the external account. The `type` field discriminates between identifier shapes. Exactly one shape applies.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/IbanIdentifier"
          },
          {
            "$ref": "#/components/schemas/UsBankAccountIdentifier"
          },
          {
            "$ref": "#/components/schemas/SwiftIdentifier"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "iban": "#/components/schemas/IbanIdentifier",
            "us_bank_account": "#/components/schemas/UsBankAccountIdentifier",
            "swift": "#/components/schemas/SwiftIdentifier"
          }
        }
      },
      "IbanIdentifierMasked": {
        "description": "Masked IBAN identifier returned in responses.",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": ["iban"]
          },
          "country": {
            "description": "ISO 3166-1 alpha-2 country code derived from the IBAN.",
            "type": "string"
          },
          "last4": {
            "description": "Last 4 characters of the IBAN.",
            "type": "string"
          },
          "bic": {
            "description": "BIC, if provided at registration.",
            "type": ["string", "null"]
          }
        }
      },
      "UsBankAccountIdentifierMasked": {
        "description": "Masked US bank account identifier returned in responses.",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": ["us_bank_account"]
          },
          "last4": {
            "description": "Last 4 digits of the account number.",
            "type": "string"
          },
          "routing_number": {
            "description": "ABA routing number. Returned unmasked — these are public bank identifiers.",
            "type": "string"
          },
          "account_type": {
            "type": "string",
            "enum": ["checking", "savings"]
          }
        }
      },
      "SwiftIdentifierMasked": {
        "description": "Masked SWIFT identifier returned in responses.",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": ["swift"]
          },
          "last4": {
            "description": "Last 4 characters of the account number.",
            "type": "string"
          },
          "bic": {
            "description": "SWIFT BIC of the beneficiary bank.",
            "type": "string"
          },
          "bank_name": {
            "description": "Name of the beneficiary bank.",
            "type": "string"
          },
          "bank_address": {
            "$ref": "#/components/schemas/Address"
          }
        }
      },
      "ExternalAccountIdentifierMasked": {
        "description": "Masked bank identifier returned in responses. Account and IBAN values are reduced to their last 4 characters.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/IbanIdentifierMasked"
          },
          {
            "$ref": "#/components/schemas/UsBankAccountIdentifierMasked"
          },
          {
            "$ref": "#/components/schemas/SwiftIdentifierMasked"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "iban": "#/components/schemas/IbanIdentifierMasked",
            "us_bank_account": "#/components/schemas/UsBankAccountIdentifierMasked",
            "swift": "#/components/schemas/SwiftIdentifierMasked"
          }
        }
      },
      "ConversionAssetType": {
        "description": "Classification of an asset within the Conversion API. Four-valued and shared with the Swaps API.",
        "type": "string",
        "enum": ["fiat", "stablecoin", "crypto", "xstock"]
      },
      "ConversionVia": {
        "description": "Unified rail or network identifier. Fiat rails: `sepa`, `fps`, `fedwire`, `ach`, `swift`. Crypto networks: `bitcoin`, `ethereum`, `solana`, `tron`, `polygon`, `arbitrum`. Discover supported values per asset via `GET /v1/swap/assets` (`supported_rails[]`).",
        "type": "string",
        "minLength": 1,
        "maxLength": 32
      },
      "InboundRouting": {
        "description": "Bank routing fields populated when the inbound `via` is a fiat rail. Field set varies per rail: SEPA/SWIFT use `iban` + `bic`; FPS uses `sort_code` + `account_number`; Fedwire/ACH use `routing_number` + `account_number`. Crypto inbounds omit `routing` entirely.",
        "type": "object",
        "properties": {
          "iban": {
            "description": "IBAN — SEPA, SWIFT.",
            "type": "string",
            "maxLength": 64
          },
          "bic": {
            "description": "BIC / SWIFT code — SEPA, SWIFT.",
            "type": "string",
            "maxLength": 32
          },
          "sort_code": {
            "description": "UK sort code — FPS.",
            "type": "string",
            "maxLength": 16
          },
          "account_number": {
            "description": "Bank account number — FPS, Fedwire, ACH.",
            "type": "string",
            "maxLength": 64
          },
          "routing_number": {
            "description": "ABA routing number — Fedwire, ACH.",
            "type": "string",
            "maxLength": 16
          }
        }
      },
      "Inbound": {
        "description": "Inbound endpoint that funds must be sent to. The shape depends on `via`: a crypto network populates `address` (and `memo` for memo chains); a fiat rail populates `routing` instead.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Unique identifier for this inbound endpoint (e.g. `da_eth_Lm2`, `vacct_01H7X`).",
            "type": "string"
          },
          "via": {
            "$ref": "#/components/schemas/ConversionVia"
          },
          "status": {
            "description": "Lifecycle status of the inbound endpoint.",
            "type": "string",
            "enum": ["active", "expired", "disabled"]
          },
          "lifecycle": {
            "description": "Whether the inbound accepts repeated credits (`reusable`) or is consumed by the first credit / expires after a TTL (`single_use`).",
            "type": "string",
            "enum": ["reusable", "single_use"]
          },
          "address": {
            "description": "On-chain deposit address. Present when `via` is a crypto network.",
            "type": ["string", "null"],
            "maxLength": 256
          },
          "memo": {
            "description": "Memo / destination tag. Required on send when `via` is a memo chain (XRP, XLM, EOS, Cosmos).",
            "type": ["string", "null"],
            "maxLength": 64
          },
          "routing": {
            "$ref": "#/components/schemas/InboundRouting"
          },
          "expires_at": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "conversion_rule_id": {
            "description": "Identifier of the conversion rule that owns this inbound (if any).",
            "type": ["string", "null"]
          },
          "created_at": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          }
        }
      },
      "ConversionFee": {
        "description": "A single fee charged against a conversion. Money-like shape `{ symbol, name, type, amount }` shared across the spec.",
        "type": "object",
        "properties": {
          "symbol": {
            "description": "Ticker symbol of the asset the fee is denominated in.",
            "type": "string",
            "minLength": 1,
            "maxLength": 10
          },
          "name": {
            "description": "Human-readable name of the asset (e.g. \"USD Coin\" for USDC). Server-populated.",
            "type": ["string", "null"]
          },
          "type": {
            "$ref": "#/components/schemas/ConversionAssetType"
          },
          "amount": {
            "description": "Fee amount as a decimal string.",
            "type": "string"
          }
        },
        "required": ["symbol", "type", "amount"]
      },
      "ConversionFees": {
        "description": "Breakdown of fees charged for a conversion.",
        "type": "object",
        "properties": {
          "trade": {
            "$ref": "#/components/schemas/ConversionFee"
          }
        }
      },
      "ChainReferences": {
        "description": "On-chain transaction identifiers populated as the conversion progresses.",
        "type": "object",
        "properties": {
          "deposit_txid": {
            "description": "Inbound deposit transaction id.",
            "type": ["string", "null"]
          },
          "withdraw_txid": {
            "description": "Outbound withdrawal transaction id.",
            "type": ["string", "null"]
          }
        }
      },
      "ConversionSource": {
        "description": "How funds are sourced for a conversion. `balance` debits the account ledger synchronously. `external_wallet` provisions an inbound deposit endpoint (returned under `inbound`).",
        "type": "object",
        "properties": {
          "type": {
            "description": "Source kind.",
            "type": "string",
            "enum": ["external_wallet", "balance"]
          },
          "via": {
            "$ref": "#/components/schemas/ConversionVia"
          },
          "id": {
            "description": "Identifier of the provisioned inbound. Populated on response when `type` is `external_wallet`.",
            "type": "string"
          },
          "address": {
            "description": "Deposit address of the provisioned inbound. Populated on response when `type` is `external_wallet`.",
            "type": "string"
          }
        },
        "required": ["type"]
      },
      "BankAccount": {
        "description": "Beneficiary bank account for fiat off-ramp destinations. Field set varies per `via`: SEPA/SWIFT use `iban` + `bic`; FPS uses `sort_code` + `account_number`; Fedwire/ACH use `routing_number` + `account_number`. The beneficiary is derived from the account's KYC identity, so there is no beneficiary field on the request. `bank` is the optional name of the beneficiary's financial institution.",
        "type": "object",
        "properties": {
          "via": {
            "$ref": "#/components/schemas/ConversionVia"
          },
          "bank": {
            "description": "Bank / financial institution name for the beneficiary account. Optional; passed through to the destination on off-ramp.",
            "type": "string",
            "maxLength": 256
          },
          "iban": {
            "description": "IBAN — SEPA, SWIFT.",
            "type": "string",
            "maxLength": 64
          },
          "bic": {
            "description": "BIC / SWIFT code — SEPA, SWIFT.",
            "type": "string",
            "maxLength": 32
          },
          "sort_code": {
            "description": "UK sort code — FPS.",
            "type": "string",
            "maxLength": 16
          },
          "account_number": {
            "description": "Bank account number — FPS, Fedwire, ACH.",
            "type": "string",
            "maxLength": 64
          },
          "routing_number": {
            "description": "ABA routing number — Fedwire, ACH.",
            "type": "string",
            "maxLength": 16
          }
        },
        "required": ["via"]
      },
      "ConversionDestination": {
        "description": "Where the converted funds are delivered. Polymorphic on `type`:\n- `external_wallet` — provide `wallet_id` referencing a previously whitelisted wallet (see `POST /v1/wallets/whitelist`). The wallet's `via` and `address` are echoed back on response.\n- `bank_account` — provide `bank_account` with rail-specific fields. Used for fiat off-ramps.",
        "type": "object",
        "properties": {
          "type": {
            "description": "Destination kind.",
            "type": "string",
            "enum": ["external_wallet", "bank_account"]
          },
          "wallet_id": {
            "description": "ID of a whitelisted wallet. Required when `type` is `external_wallet`.",
            "type": "string",
            "maxLength": 64
          },
          "via": {
            "$ref": "#/components/schemas/ConversionVia"
          },
          "address": {
            "description": "On-chain destination address. Echoed back when `type` is `external_wallet`.",
            "type": "string",
            "maxLength": 256
          },
          "bank_account": {
            "$ref": "#/components/schemas/BankAccount"
          },
          "user_id": {
            "description": "Partner-supplied identifier for the end customer who owns this destination.",
            "type": "string",
            "maxLength": 128
          }
        },
        "required": ["type"]
      },
      "ConversionSwapQuote": {
        "description": "Swap quote that priced this conversion. Present when the conversion was created with `swap_quote_id`, or once an indicative-priced conversion has settled.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Swap quote identifier.",
            "type": "string"
          },
          "status": {
            "description": "Swap quote lifecycle status at the time of response.",
            "type": "string",
            "enum": ["offered", "executing", "executed", "expired", "failed", "pending"]
          },
          "rate": {
            "$ref": "#/components/schemas/Rate"
          }
        }
      },
      "WhitelistedWallet": {
        "description": "An external wallet whitelisted as a conversion destination.\n\nScreening is asynchronous: the wallet enters `pending`, then transitions to `approved` (usable as a destination) or `rejected`.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Unique identifier (e.g. `wl_client_sol`).",
            "type": "string"
          },
          "via": {
            "$ref": "#/components/schemas/ConversionVia"
          },
          "address": {
            "description": "On-chain wallet address.",
            "type": "string",
            "maxLength": 256
          },
          "memo": {
            "description": "Memo / destination tag for memo chains.",
            "type": ["string", "null"],
            "maxLength": 64
          },
          "status": {
            "description": "Screening status.",
            "type": "string",
            "enum": ["pending", "approved", "rejected"]
          },
          "external_user_id": {
            "description": "Partner-supplied end-customer identifier.",
            "type": ["string", "null"]
          },
          "created_at": {
            "$ref": "#/components/schemas/google.protobuf.Timestamp"
          },
          "account": {
            "description": "PWS account that owns the whitelist entry.",
            "type": "string"
          }
        }
      },
      "WhitelistWalletRequest": {
        "description": "Request to whitelist an external wallet for use as a conversion destination.",
        "type": "object",
        "properties": {
          "via": {
            "$ref": "#/components/schemas/ConversionVia"
          },
          "address": {
            "description": "On-chain wallet address.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "memo": {
            "description": "Memo / destination tag. Required for memo chains (XRP, XLM, EOS, Cosmos).",
            "type": "string",
            "maxLength": 64
          },
          "external_user_id": {
            "description": "Partner-supplied end-customer identifier.",
            "type": "string",
            "maxLength": 128
          }
        },
        "required": ["via", "address"]
      },
      "ValidationCause": {
        "description": "One failed field-level validation rule.",
        "type": "object",
        "properties": {
          "field": {
            "description": "Dot-notation path to the offending request field.",
            "type": "string"
          },
          "message": {
            "description": "Human-readable explanation of the failed validation rule.",
            "type": "string"
          }
        },
        "required": ["field", "message"]
      },
      "ValidationErrorResponse": {
        "description": "The request was rejected because the client supplied invalid input.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "status": {
                "type": "integer",
                "format": "int32",
                "enum": [400]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["bad_request"]
              },
              "doc_url": {
                "type": "string",
                "format": "uri"
              },
              "causes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ValidationCause"
                }
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "UnauthenticatedErrorResponse": {
        "description": "Authentication credentials were missing or invalid.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "status": {
                "type": "integer",
                "format": "int32",
                "enum": [401]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["unauthenticated"]
              },
              "doc_url": {
                "type": "string",
                "format": "uri"
              },
              "causes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "ForbiddenErrorResponse": {
        "description": "The caller is authenticated but is not allowed to perform this action.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "status": {
                "type": "integer",
                "format": "int32",
                "enum": [403]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["forbidden"]
              },
              "doc_url": {
                "type": "string",
                "format": "uri"
              },
              "causes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "NotFoundErrorResponse": {
        "description": "The requested resource does not exist.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["request_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [404]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["not_found"]
              },
              "doc_url": {
                "type": ["string", "null"],
                "format": "uri"
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "ConflictErrorResponse": {
        "description": "Generic state conflict that does not match a more specific 409 code.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["state_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["conflict"]
              },
              "doc_url": {
                "type": ["string", "null"]
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "QuoteAlreadyExecutedErrorResponse": {
        "description": "The quote has already been executed and cannot be executed again.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["quote_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["quote_already_executed"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "quote_id": {
                "type": "string",
                "description": "Identifier of the quote that was already executed."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "QuoteExpiredErrorResponse": {
        "description": "The quote has expired and is no longer valid for execution.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["quote_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [410]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["quote_expired"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "quote_id": {
                "type": "string",
                "description": "Identifier of the expired quote."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "TradeLockedErrorResponse": {
        "description": "Trading is locked for the user or account, so a quote cannot be created.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["quote_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [403]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["trade_locked"]
              },
              "doc_url": {
                "type": ["string", "null"]
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "InsufficientFundsErrorResponse": {
        "description": "The account balance was insufficient at execution time. Returned from `POST /v1/accounts/{account_id}/quotes/{quote_id}/execute` for account-funded quotes.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["quote_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["insufficient_funds"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "quote_id": {
                "type": "string",
                "description": "Identifier of the quote whose execution was rejected."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "RateLimitErrorResponse": {
        "description": "The request rate limit was exceeded.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "status": {
                "type": "integer",
                "format": "int32",
                "enum": [429]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["resource_exhausted"]
              },
              "doc_url": {
                "type": "string",
                "format": "uri"
              },
              "causes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "InternalErrorResponse": {
        "description": "An internal server error occurred.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "status": {
                "type": "integer",
                "format": "int32",
                "enum": [500]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["internal"]
              },
              "doc_url": {
                "type": "string",
                "format": "uri"
              },
              "causes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "ServiceUnavailableErrorResponse": {
        "description": "The service is temporarily unavailable.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "status": {
                "type": "integer",
                "format": "int32",
                "enum": [503]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["unavailable"]
              },
              "doc_url": {
                "type": "string",
                "format": "uri"
              },
              "causes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "DeadlineExceededErrorResponse": {
        "description": "The upstream request deadline was exceeded.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "status": {
                "type": "integer",
                "format": "int32",
                "enum": [504]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["deadline_exceeded"]
              },
              "doc_url": {
                "type": "string",
                "format": "uri"
              },
              "causes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "InsufficientBalanceErrorResponse": {
        "description": "The source account does not have sufficient available balance to complete the operation.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["balance_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["insufficient_balance"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "account": {
                "type": "string",
                "description": "Account that lacks sufficient balance."
              },
              "asset": {
                "type": "string",
                "description": "Asset that lacks sufficient balance."
              },
              "required": {
                "type": "string",
                "description": "Amount required for the operation, as a decimal string."
              },
              "available": {
                "type": "string",
                "description": "Amount currently available, as a decimal string."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "WalletNotWhitelistedErrorResponse": {
        "description": "The destination references a wallet that is not in `approved` state. Whitelist the wallet via `POST /v1/wallets/whitelist` and wait for `status: approved` before retrying.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["wallet_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["wallet_not_whitelisted"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "wallet_id": {
                "type": "string",
                "description": "Identifier of the wallet that is not in `approved` state."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "AssetPairUnsupportedErrorResponse": {
        "description": "The requested `from.symbol` -> `to.symbol` pair is not supported.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["asset_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["asset_pair_unsupported"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "from_asset": {
                "type": "string",
                "description": "Source asset that was requested."
              },
              "to_asset": {
                "type": "string",
                "description": "Destination asset that was requested."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "NetworkUnsupportedErrorResponse": {
        "description": "The crypto network specified in `via` is not supported.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["asset_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["network_unsupported"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "via": {
                "type": "string",
                "description": "Crypto network identifier that is not supported."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "RailUnsupportedErrorResponse": {
        "description": "The fiat rail specified in `via` is not supported.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["asset_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["rail_unsupported"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "via": {
                "type": "string",
                "description": "Fiat rail identifier that is not supported."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "AssetOnNetworkUnsupportedErrorResponse": {
        "description": "The asset does not exist on the specified network (e.g. SOL on Ethereum).",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["asset_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["asset_on_network_unsupported"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "asset": {
                "type": "string",
                "description": "Asset ticker that does not exist on the specified network."
              },
              "via": {
                "type": "string",
                "description": "Network identifier the asset was requested on."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "ComplianceRejectedErrorResponse": {
        "description": "The request was rejected for compliance reasons (sanctions, KYT, source-of-funds, or fraud). Surface to end customers as \"cannot proceed\" rather than retry.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["compliance_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [451]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["compliance_rejected"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "reason": {
                "type": "string",
                "enum": ["sanctions", "kyt", "source_of_funds", "fraud"],
                "description": "Compliance rejection category."
              },
              "reference": {
                "type": ["string", "null"],
                "description": "Optional internal reference for support follow-up."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "JurisdictionRestrictedErrorResponse": {
        "description": "The asset or rail is not available in the end customer's jurisdiction.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["compliance_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [451]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["jurisdiction_restricted"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "description": "ISO 3166-1 alpha-2 country code."
              },
              "region": {
                "type": ["string", "null"],
                "description": "Optional region code within the country."
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "AssetSymbol": {
        "description": "Ticker symbol of an asset (e.g. `BTC`, `USDC`, `EUR`).",
        "type": "string",
        "minLength": 3,
        "maxLength": 16,
        "example": "BTC"
      },
      "AthValue": {
        "$ref": "#/components/schemas/BigDecimal",
        "description": "The all-time high price of the asset.\n"
      },
      "BasisPoints": {
        "type": "string",
        "pattern": "^\\d{1,5}$",
        "description": "Basis points represented as a string. Range 0-10000 where 100 = 1%.",
        "example": "250",
        "format": "bps"
      },
      "BigDecimal": {
        "type": "string",
        "format": "decimal128",
        "example": "1.23",
        "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
        "minLength": 1,
        "maxLength": 64
      },
      "CirculatingSupply": {
        "$ref": "#/components/schemas/BigDecimal",
        "description": "The number of tokens in circulation.\n"
      },
      "CountryCode": {
        "description": "ISO 3166-1 alpha-2 country code.",
        "type": "string",
        "enum": [
          "AD",
          "AE",
          "AF",
          "AG",
          "AI",
          "AL",
          "AM",
          "AO",
          "AQ",
          "AR",
          "AS",
          "AT",
          "AU",
          "AW",
          "AX",
          "AZ",
          "BA",
          "BB",
          "BD",
          "BE",
          "BF",
          "BG",
          "BH",
          "BI",
          "BJ",
          "BL",
          "BM",
          "BN",
          "BO",
          "BQ",
          "BR",
          "BS",
          "BT",
          "BV",
          "BW",
          "BY",
          "BZ",
          "CA",
          "CC",
          "CD",
          "CF",
          "CG",
          "CH",
          "CI",
          "CK",
          "CL",
          "CM",
          "CN",
          "CO",
          "CR",
          "CU",
          "CV",
          "CW",
          "CX",
          "CY",
          "CZ",
          "DE",
          "DJ",
          "DK",
          "DM",
          "DO",
          "DZ",
          "EC",
          "EE",
          "EG",
          "EH",
          "ER",
          "ES",
          "ET",
          "FI",
          "FJ",
          "FK",
          "FM",
          "FO",
          "FR",
          "GA",
          "GB",
          "GD",
          "GE",
          "GF",
          "GG",
          "GH",
          "GI",
          "GL",
          "GM",
          "GN",
          "GP",
          "GQ",
          "GR",
          "GS",
          "GT",
          "GU",
          "GW",
          "GY",
          "HK",
          "HM",
          "HN",
          "HR",
          "HT",
          "HU",
          "ID",
          "IE",
          "IL",
          "IM",
          "IN",
          "IO",
          "IQ",
          "IR",
          "IS",
          "IT",
          "JE",
          "JM",
          "JO",
          "JP",
          "KE",
          "KG",
          "KH",
          "KI",
          "KM",
          "KN",
          "KP",
          "KR",
          "KW",
          "KY",
          "KZ",
          "LA",
          "LB",
          "LC",
          "LI",
          "LK",
          "LR",
          "LS",
          "LT",
          "LU",
          "LV",
          "LY",
          "MA",
          "MC",
          "MD",
          "ME",
          "MF",
          "MG",
          "MH",
          "MK",
          "ML",
          "MM",
          "MN",
          "MO",
          "MP",
          "MQ",
          "MR",
          "MS",
          "MT",
          "MU",
          "MV",
          "MW",
          "MX",
          "MY",
          "MZ",
          "NA",
          "NC",
          "NE",
          "NF",
          "NG",
          "NI",
          "NL",
          "NO",
          "NP",
          "NR",
          "NU",
          "NZ",
          "OM",
          "PA",
          "PE",
          "PF",
          "PG",
          "PH",
          "PK",
          "PL",
          "PM",
          "PN",
          "PR",
          "PS",
          "PT",
          "PW",
          "PY",
          "QA",
          "RE",
          "RO",
          "RS",
          "RU",
          "RW",
          "SA",
          "SB",
          "SC",
          "SD",
          "SE",
          "SG",
          "SH",
          "SI",
          "SJ",
          "SK",
          "SL",
          "SM",
          "SN",
          "SO",
          "SR",
          "SS",
          "ST",
          "SV",
          "SX",
          "SY",
          "SZ",
          "TC",
          "TD",
          "TF",
          "TG",
          "TH",
          "TJ",
          "TK",
          "TL",
          "TM",
          "TN",
          "TO",
          "TR",
          "TT",
          "TV",
          "TW",
          "TZ",
          "UA",
          "UG",
          "UM",
          "US",
          "UY",
          "UZ",
          "VA",
          "VC",
          "VE",
          "VG",
          "VI",
          "VN",
          "VU",
          "WF",
          "WS",
          "YE",
          "YT",
          "ZA",
          "ZM",
          "ZW",
          "AC",
          "AN",
          "AP",
          "CP",
          "DG",
          "EA",
          "EU",
          "IC",
          "JX",
          "TA",
          "QO",
          "XK",
          "0C"
        ],
        "minLength": 2,
        "maxLength": 2,
        "example": "US"
      },
      "Date": {
        "type": "string",
        "format": "date",
        "description": "A RFC 3339 date (without time)",
        "example": "2023-03-13"
      },
      "DateTime": {
        "type": "string",
        "format": "date-time",
        "description": "A RFC 3339 datetime",
        "example": "2023-03-13T12:34:56Z"
      },
      "EnglishName": {
        "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC). Populated by the server in responses.",
        "type": "string",
        "example": "Bitcoin"
      },
      "AccountId": {
        "type": "string",
        "description": "Canonical identifier for an account in the Payward public API.",
        "minLength": 14,
        "maxLength": 42
      },
      "UserId": {
        "type": "string",
        "description": "Canonical identifier for a user in the Payward public API.",
        "minLength": 14,
        "maxLength": 42
      },
      "JsonPointer": {
        "type": "string",
        "format": "json-pointer",
        "description": "RFC6901 JSON Pointer"
      },
      "Lang": {
        "type": "string",
        "description": "RFC5646 Language Tag",
        "default": "en",
        "pattern": "^([a-zA-Z]{1,8})(-[a-zA-Z\\d]{1,8})*$",
        "example": "az-Arab-x-AZE-derbend"
      },
      "Logo": {
        "type": "object",
        "properties": {
          "width": {
            "$ref": "#/components/schemas/Uint16"
          },
          "height": {
            "$ref": "#/components/schemas/Uint16"
          },
          "href": {
            "$ref": "#/components/schemas/Uri"
          },
          "type": {
            "$ref": "#/components/schemas/MediaRange"
          }
        },
        "required": ["height", "href", "width"]
      },
      "MarketCapValue": {
        "$ref": "#/components/schemas/BigDecimal",
        "description": "The market cap value, in the `quote` asset provided in the request."
      },
      "MaxSupply": {
        "$ref": "#/components/schemas/BigDecimal",
        "description": "The maximum number of tokens that can ever exist.\n"
      },
      "MediaRange": {
        "type": "string",
        "format": "media-range"
      },
      "PageNumber": {
        "type": "integer",
        "format": "uint32",
        "default": 1,
        "minimum": 1
      },
      "PageSize": {
        "type": "integer",
        "format": "uint32",
        "default": 1,
        "minimum": 1,
        "maximum": 100
      },
      "Percentage": {
        "$ref": "#/components/schemas/BigDecimal"
      },
      "Phone": {
        "type": "string"
      },
      "PriceTick": {
        "type": "object",
        "properties": {
          "timestamp": {
            "$ref": "#/components/schemas/DateTime"
          },
          "midpoint": {
            "description": "Midpoint between best bid and best ask, denominated in the quote asset.",
            "allOf": [
              {
                "$ref": "#/components/schemas/BigDecimal"
              }
            ]
          }
        },
        "required": ["midpoint", "timestamp"]
      },
      "TotalSupply": {
        "$ref": "#/components/schemas/BigDecimal",
        "description": "The total number of tokens that currently exist.\n"
      },
      "Uint8": {
        "type": "integer",
        "format": "uint8",
        "minimum": 0,
        "maximum": 255
      },
      "Uint16": {
        "type": "integer",
        "format": "uint16",
        "minimum": 0,
        "maximum": 65535
      },
      "Uint32": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0,
        "maximum": 4294967295
      },
      "Uint64": {
        "type": "integer",
        "format": "uint32",
        "minimum": 0,
        "maximum": 18446744073709552000
      },
      "Uri": {
        "description": "An RFC3986 URI",
        "type": "string",
        "format": "uri"
      },
      "PriceTriggerSwapCondition": {
        "description": "The condition under which the order's `trade` fires.\n\nWatches the price of the `base`/`quote` asset pair and fires when the live price reaches the threshold. Specify exactly one of `drops_to` or `rises_to`:\n\n- `drops_to`: fires when the price falls to or below the value (e.g. \"buy on dip\").\n- `rises_to`: fires when the price rises to or above the value (e.g. \"take profit\").",
        "type": "object",
        "properties": {
          "base": {
            "description": "Base asset of the pair to monitor.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRef"
              }
            ]
          },
          "quote": {
            "description": "Quote asset of the pair to monitor.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRef"
              }
            ]
          },
          "drops_to": {
            "description": "Fire when the price reaches this value or below. Decimal string. Mutually exclusive with `rises_to`.",
            "type": "string",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
            "minLength": 1,
            "maxLength": 64,
            "example": "50000.00"
          },
          "rises_to": {
            "description": "Fire when the price reaches this value or above. Decimal string. Mutually exclusive with `drops_to`.",
            "type": "string",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
            "minLength": 1,
            "maxLength": 64,
            "example": "80000.00"
          }
        },
        "required": ["base", "quote"],
        "oneOf": [
          {
            "type": "object",
            "required": ["drops_to"],
            "not": {
              "required": ["rises_to"]
            }
          },
          {
            "type": "object",
            "required": ["rises_to"],
            "not": {
              "required": ["drops_to"]
            }
          }
        ]
      },
      "PriceTriggerSwapConditionResponse": {
        "description": "The condition under which the order's `trade` fires.\n\nWatches the price of the `base`/`quote` asset pair and fires when the live price reaches the threshold. Specify exactly one of `drops_to` or `rises_to`:\n\n- `drops_to`: fires when the price falls to or below the value (e.g. \"buy on dip\").\n- `rises_to`: fires when the price rises to or above the value (e.g. \"take profit\").",
        "type": "object",
        "properties": {
          "base": {
            "description": "Base asset of the pair to monitor.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRefResponse"
              }
            ]
          },
          "quote": {
            "description": "Quote asset of the pair to monitor.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRefResponse"
              }
            ]
          },
          "drops_to": {
            "description": "Fire when the price reaches this value or below. Decimal string. Mutually exclusive with `rises_to`.",
            "type": "string",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
            "minLength": 1,
            "maxLength": 64,
            "example": "50000.00"
          },
          "rises_to": {
            "description": "Fire when the price reaches this value or above. Decimal string. Mutually exclusive with `drops_to`.",
            "type": "string",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
            "minLength": 1,
            "maxLength": 64,
            "example": "80000.00"
          }
        },
        "required": ["base", "quote"],
        "oneOf": [
          {
            "type": "object",
            "required": ["drops_to"],
            "not": {
              "required": ["rises_to"]
            }
          },
          {
            "type": "object",
            "required": ["rises_to"],
            "not": {
              "required": ["drops_to"]
            }
          }
        ]
      },
      "PriceTriggerSwapTradeRequest": {
        "description": "The trade to execute when the order's `when` condition fires.\n\n`from` and `to` use the same `AssetAmount` shape as a swap quote — a price trigger swap is, in effect, a swap quote that waits for a price condition before executing. Exactly one of `from.amount` or `to.amount` must be provided to indicate which side of the trade is fixed; the other side's amount is determined at execution time. Setting both amounts or omitting both is rejected with a 400 Bad Request.\n\n`fee` is the partner's configured fee, applied on top of the underlying execution price when the trade fires. Request-only — not echoed in response payloads.",
        "type": "object",
        "properties": {
          "from": {
            "description": "Source asset and amount for the trade.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetAmount"
              }
            ]
          },
          "to": {
            "description": "Destination asset and amount for the trade.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetAmount"
              }
            ]
          },
          "fee": {
            "$ref": "#/components/schemas/PartnerFee"
          }
        },
        "required": ["from", "to"]
      },
      "PriceTriggerSwapStatus": {
        "description": "Current lifecycle status of a price trigger swap.\n\n- `active`: awaiting trigger evaluation.\n- `completed`: the trigger fired and the trade executed successfully. Terminal. Realized details are available on `executed`.\n- `cancelled`: the order was cancelled before completion. Terminal.\n- `failed`: the trigger fired but the trade could not be completed. Terminal. See `failure_reason`.",
        "type": "string",
        "enum": ["active", "completed", "cancelled", "failed"]
      },
      "PriceTriggerSwap": {
        "description": "A price trigger swap that submits a trade when its `when` condition is met.",
        "type": "object",
        "properties": {
          "id": {
            "description": "Unique identifier for this price trigger swap.",
            "type": "string",
            "example": "AGHJB4-MMBOW-KANZXS"
          },
          "status": {
            "$ref": "#/components/schemas/PriceTriggerSwapStatus"
          },
          "requested": {
            "description": "Trade and trigger condition requested by the client.",
            "allOf": [
              {
                "$ref": "#/components/schemas/PriceTriggerSwapRequested"
              }
            ]
          },
          "executed": {
            "description": "Realized trade details. Present once `status` is `completed`.",
            "allOf": [
              {
                "$ref": "#/components/schemas/PriceTriggerSwapExecuted"
              }
            ]
          },
          "failure_reason": {
            "description": "Why the swap failed. Present only when `status` is `failed`.",
            "allOf": [
              {
                "$ref": "#/components/schemas/PriceTriggerSwapFailureReason"
              }
            ]
          },
          "created_at": {
            "description": "Time at which the price trigger swap was created.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "updated_at": {
            "description": "Time at which the price trigger swap was last updated.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          }
        },
        "required": ["id", "status", "requested", "created_at", "updated_at"]
      },
      "PriceTriggerSwapNotCancellableErrorResponse": {
        "description": "The swap can no longer be cancelled. This happens when the swap has already `completed`, has already been `cancelled`, or its trade is mid-execution (the underlying trade has fired and cannot be unwound).",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["price_trigger_swap_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [409]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["price_trigger_swap_not_cancellable"]
              },
              "doc_url": {
                "type": ["string", "null"]
              },
              "price_trigger_swap_id": {
                "description": "Identifier of the price trigger swap.",
                "type": "string"
              },
              "current_status": {
                "description": "The swap's current lifecycle status (which is not `active`).",
                "type": "string",
                "enum": ["completed", "cancelled"]
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "PriceTriggerSwapTargetPriceAlreadyAvailableErrorResponse": {
        "description": "The requested target price is already available outside the accepted tolerance, so the price trigger swap would trigger immediately.",
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["price_trigger_swap_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [412]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["price_trigger_swap_target_price_already_available"]
              },
              "doc_url": {
                "type": ["string", "null"]
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "PriceTriggerSwapExecutedEvent": {
        "description": "Webhook event delivered when a price trigger swap's trigger has fired and the resulting trade has executed successfully.",
        "type": "object",
        "properties": {
          "event_type": {
            "type": "string",
            "enum": ["price_trigger_swap.executed"]
          },
          "event_id": {
            "description": "Unique identifier for this webhook event delivery.",
            "type": "string",
            "format": "uuid"
          },
          "timestamp": {
            "description": "When the event occurred.",
            "type": "string",
            "format": "date-time"
          },
          "account_id": {
            "description": "ID of the account the order belongs to.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AccountId"
              }
            ]
          },
          "order": {
            "$ref": "#/components/schemas/PriceTriggerSwap"
          }
        },
        "required": ["event_type", "event_id", "timestamp", "account_id", "order"]
      },
      "PriceTriggerSwapExecutionFailedEvent": {
        "description": "Webhook event delivered when a price trigger swap's trigger has fired but the resulting trade failed to execute. The order may still be `active` and retried, or `cancelled` if retries are exhausted; consult `order.status`.",
        "type": "object",
        "properties": {
          "event_type": {
            "type": "string",
            "enum": ["price_trigger_swap.execution_failed"]
          },
          "event_id": {
            "description": "Unique identifier for this webhook event delivery.",
            "type": "string",
            "format": "uuid"
          },
          "timestamp": {
            "description": "When the event occurred.",
            "type": "string",
            "format": "date-time"
          },
          "account_id": {
            "description": "ID of the account the order belongs to.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AccountId"
              }
            ]
          },
          "order": {
            "$ref": "#/components/schemas/PriceTriggerSwap"
          },
          "failure": {
            "description": "Why this execution attempt failed.",
            "type": "object",
            "properties": {
              "code": {
                "description": "Machine-readable failure code.",
                "type": "string"
              },
              "details": {
                "description": "Optional free-text detail.",
                "type": "string"
              }
            },
            "required": ["code"]
          }
        },
        "required": ["event_type", "event_id", "timestamp", "account_id", "order", "failure"]
      },
      "PriceTriggerSwapCancelledEvent": {
        "description": "Webhook event delivered when a price trigger swap has been cancelled. The cancellation reason is on `order.cancelled_reason`.",
        "type": "object",
        "properties": {
          "event_type": {
            "type": "string",
            "enum": ["price_trigger_swap.cancelled"]
          },
          "event_id": {
            "description": "Unique identifier for this webhook event delivery.",
            "type": "string",
            "format": "uuid"
          },
          "timestamp": {
            "description": "When the event occurred.",
            "type": "string",
            "format": "date-time"
          },
          "account_id": {
            "description": "ID of the account the order belongs to.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AccountId"
              }
            ]
          },
          "order": {
            "$ref": "#/components/schemas/PriceTriggerSwap"
          }
        },
        "required": ["event_type", "event_id", "timestamp", "account_id", "order"]
      },
      "QuoteExecutedEvent": {
        "type": "object",
        "description": "QuoteExecutedEvent schema (stub — fill in with actual properties)."
      },
      "QuoteExecutionFailedEvent": {
        "type": "object",
        "description": "QuoteExecutionFailedEvent schema (stub — fill in with actual properties)."
      },
      "QuoteCancelledEvent": {
        "type": "object",
        "description": "QuoteCancelledEvent schema (stub — fill in with actual properties)."
      },
      "WithdrawalStatusUpdatedEvent": {
        "type": "object",
        "description": "WithdrawalStatusUpdatedEvent schema (stub — fill in with actual properties)."
      },
      "UserVerifiedEvent": {
        "type": "object",
        "description": "UserVerifiedEvent schema (stub — fill in with actual properties)."
      },
      "UserClosedEvent": {
        "type": "object",
        "description": "UserClosedEvent schema (stub — fill in with actual properties)."
      },
      "UserDisabledEvent": {
        "type": "object",
        "description": "UserDisabledEvent schema (stub — fill in with actual properties)."
      },
      "RewardPaidEvent": {
        "type": "object",
        "description": "RewardPaidEvent schema (stub — fill in with actual properties)."
      },
      "WebhookTestEvent": {
        "type": "object",
        "description": "WebhookTestEvent schema (stub — fill in with actual properties)."
      },
      "RampCryptoAsset": {
        "type": "object",
        "description": "Cryptocurrency asset metadata for Ramp buy operations.",
        "properties": {
          "symbol": {
            "description": "Ticker symbol of the asset (e.g. \"BTC\", \"ETH\", \"SOL\").",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSymbol"
              }
            ]
          },
          "name": {
            "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC).",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "xstock"]
          },
          "wrapped_asset": {
            "description": "Optional wrapped-asset code for the asset (e.g. \"WSOL\" for wrapped Solana).",
            "type": "string",
            "minLength": 1,
            "maxLength": 16
          },
          "market_cap_rank": {
            "description": "Asset's ranking based on market capitalization (lower number = higher rank).",
            "type": "integer",
            "format": "int32"
          },
          "network": {
            "description": "Withdrawal network label for the asset (e.g. \"Lightning\", \"Bitcoin\", \"Ethereum\").",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "method": {
            "description": "Unique name for the withdrawal method.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "disabled_against": {
            "description": "List of fiat assets that cannot be paired with this cryptocurrency asset.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetRef"
            }
          }
        },
        "required": ["symbol", "name", "type", "market_cap_rank", "network", "method"]
      },
      "RampFiatCurrency": {
        "type": "object",
        "description": "Fiat currency metadata for Ramp deposits.",
        "properties": {
          "symbol": {
            "description": "Ticker symbol of the asset using ISO 4217 currency codes (e.g. \"USD\", \"EUR\", \"GBP\").",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSymbol"
              }
            ]
          },
          "name": {
            "description": "Human-readable name of the asset (e.g. \"US Dollar\" for USD).",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat"],
            "default": "fiat"
          }
        },
        "required": ["symbol", "name", "type"]
      },
      "RampPaymentMethod": {
        "type": "object",
        "description": "Supported Ramp payment method.",
        "properties": {
          "method": {
            "description": "Unique payment-method name.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          }
        },
        "required": ["method"]
      },
      "RampCountry": {
        "type": "object",
        "description": "Supported Ramp country entry.",
        "properties": {
          "country": {
            "description": "ISO 3166-1 alpha-2 country code.",
            "type": "string",
            "minLength": 2,
            "maxLength": 2
          },
          "subdivisions": {
            "description": "ISO 3166-2 subdivision suffixes for countries that support a subdivision parameter, such as US states, Canadian provinces, or Ukrainian regions.",
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 3
            }
          }
        },
        "required": ["country"]
      },
      "RampWireTransactionRange": {
        "type": "object",
        "description": "Min/max transaction range expressed in asset amount.",
        "properties": {
          "minimum": {
            "description": "Minimum single-transaction amount allowed.",
            "anyOf": [
              {
                "$ref": "#/components/schemas/RampAssetAmount"
              },
              {
                "type": "null"
              }
            ]
          },
          "maximum": {
            "description": "Maximum single-transaction amount allowed.",
            "anyOf": [
              {
                "$ref": "#/components/schemas/RampAssetAmount"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "RampAssetAmount": {
        "type": "object",
        "description": "Money-like value: an amount denominated in a specific asset. Used across Ramp endpoints for limits, breakdowns, and prices.",
        "properties": {
          "symbol": {
            "description": "Ticker symbol of the asset.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSymbol"
              }
            ]
          },
          "name": {
            "description": "Human-readable name of the asset (e.g. \"Bitcoin\" for BTC).",
            "type": ["string", "null"]
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "xstock"]
          },
          "amount": {
            "description": "The amount.",
            "$ref": "#/components/schemas/BigDecimal"
          }
        },
        "required": ["symbol", "type", "amount"]
      },
      "RampAssetDetails": {
        "type": "object",
        "description": "Asset breakdown returned in Ramp quotes.",
        "properties": {
          "asset": {
            "description": "The asset for this breakdown (e.g. USD on the from side, BTC on the to side).",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRefResponse"
              }
            ]
          },
          "total": {
            "description": "Total amount after all fees. On the from side: subtotal + fee + deposit_fee. On the to side: subtotal - withdrawal_fee.",
            "type": "string",
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "subtotal": {
            "description": "Base trade amount before any fees are applied.",
            "type": "string",
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "fee": {
            "description": "Trading fee amount. This includes the affiliate fee portion when affiliate_fee_bps was provided.",
            "type": ["string", "null"],
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "deposit_fee": {
            "description": "Deposit or funding fee charged on the fiat payment method.",
            "type": ["string", "null"],
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "affiliate_fee": {
            "description": "Portion of fee attributed to the partner, based on the affiliate_fee_bps rate provided during checkout. This amount is already included in fee, not additional to it.",
            "type": ["string", "null"],
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "withdrawal_fee": {
            "description": "Crypto withdrawal or network fee (if applicable).",
            "type": ["string", "null"],
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "in_display": {
            "description": "Optional display currency projection for this asset breakdown.",
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/RampAssetDetailsDisplay"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": ["asset", "total", "subtotal"]
      },
      "RampAssetDetailsDisplay": {
        "type": "object",
        "description": "Asset details presented in the requested display currency.",
        "properties": {
          "asset": {
            "description": "The display currency asset (e.g. EUR when projecting a USD breakdown into EUR).",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRefResponse"
              }
            ]
          },
          "total": {
            "description": "Total amount in display currency after all fees. On the from side: subtotal + fee + deposit_fee. On the to side: subtotal - withdrawal_fee.",
            "type": "string",
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "subtotal": {
            "description": "Base trade amount in display currency before any fees are applied.",
            "type": "string",
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "fee": {
            "description": "Trading fee amount in display currency. This includes the affiliate fee portion when affiliate_fee_bps was provided.",
            "type": ["string", "null"],
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "deposit_fee": {
            "description": "Deposit or funding fee in display currency.",
            "type": ["string", "null"],
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "affiliate_fee": {
            "description": "Portion of fee attributed to the partner in display currency, based on the affiliate_fee_bps rate provided during checkout. This amount is already included in fee, not additional to it.",
            "type": ["string", "null"],
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "withdrawal_fee": {
            "description": "Crypto withdrawal or network fee in display currency (if applicable).",
            "type": ["string", "null"],
            "format": "decimal128",
            "example": "1.23",
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          }
        }
      },
      "RampUnitPrice": {
        "type": "object",
        "description": "Unit price information returned in Ramp quotes.",
        "properties": {
          "asset": {
            "description": "The asset being priced (e.g. BTC).",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRefResponse"
              }
            ]
          },
          "denomination_asset": {
            "description": "The asset used to express the price (e.g. USD).",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRefResponse"
              }
            ]
          },
          "unit_price": {
            "description": "Price of one unit of `asset`, denominated in `denomination_asset`.",
            "$ref": "#/components/schemas/BigDecimal"
          },
          "in_display": {
            "description": "Optional unit price projection in a different display currency.",
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/RampUnitPriceDisplay"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": ["asset", "denomination_asset", "unit_price"]
      },
      "RampUnitPriceDisplay": {
        "type": "object",
        "description": "Unit price information in display currency.",
        "properties": {
          "asset": {
            "description": "The display currency asset (e.g. EUR when projecting a USD-denominated price into EUR).",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetRefResponse"
              }
            ]
          },
          "unit_price": {
            "description": "Unit price converted to the display currency.",
            "$ref": "#/components/schemas/BigDecimal"
          }
        }
      },
      "ProblemBadRequest": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": ["tag:kraken.com,2025:BadRequest"]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {},
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Gateway"]
          }
        },
        "required": ["data", "source", "status", "title", "type"]
      },
      "ProblemDeadlineExceeded": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": ["tag:kraken.com,2025:DeadlineExceeded"]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {},
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Gateway"]
          }
        },
        "required": ["data", "source", "status", "title", "type"]
      },
      "ProblemForbidden": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": ["tag:kraken.com,2025:Forbidden"]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {},
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Gateway"]
          }
        },
        "required": ["data", "source", "status", "title", "type"]
      },
      "ProblemInternal": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": [
              "tag:kraken.com,2025:gateway/ReadUpstream",
              "tag:kraken.com,2025:gateway/WriteResponse",
              "tag:kraken.com,2025:gateway/Connect",
              "tag:kraken.com,2025:gateway/Fatal",
              "tag:kraken.com,2025:Internal"
            ]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {},
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Gateway"]
          }
        },
        "required": ["data", "source", "status", "title", "type"]
      },
      "ProblemNotFound": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": ["tag:kraken.com,2025:NotFound"]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {},
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Gateway"]
          }
        },
        "required": ["data", "source", "status", "title", "type"]
      },
      "ProblemResourceExhausted": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": ["tag:kraken.com,2025:ResourceExhausted"]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {},
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Gateway"]
          }
        },
        "required": ["data", "source", "status", "title", "type"]
      },
      "ProblemUnauthenticated": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": ["tag:kraken.com,2025:Unauthenticated"]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {},
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Gateway"]
          }
        },
        "required": ["data", "source", "status", "title", "type"]
      },
      "ProblemUnavailable": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": ["tag:kraken.com,2025:gateway/Connect", "tag:kraken.com,2025:Unavailable"]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {},
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Gateway"]
          }
        },
        "required": ["data", "source", "status", "title", "type"]
      },
      "ProblemUnimplemented": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": ["tag:kraken.com,2025:Unimplemented"]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {},
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Gateway"]
          }
        },
        "required": ["data", "source", "status", "title", "type"]
      },
      "ProblemConflict": {
        "type": "object",
        "properties": {
          "type": {
            "description": "URL uniquely identifying the error type relative to an operation",
            "type": "string",
            "enum": ["tag:kraken.com,2025:Conflict"]
          },
          "status": {
            "description": "HTTP status (provided for convenience)",
            "type": "integer",
            "format": "uint16",
            "minimum": 0
          },
          "title": {
            "description": "Short human-readable summary",
            "type": "string"
          },
          "detail": {
            "description": "Help to solve the problem",
            "type": ["string", "null"]
          },
          "instance": {
            "description": "Link to debug data for this particular error",
            "type": ["string", "null"]
          },
          "data": {
            "type": "object",
            "properties": {
              "reason": {
                "description": "Machine-readable reason code (e.g. \"rule_already_deleted\").",
                "type": "string"
              }
            }
          },
          "source": {
            "description": "Whether the service or gateway threw the error.",
            "type": "string",
            "enum": ["Service"]
          }
        },
        "required": ["data", "source", "status", "title", "type"],
        "description": "Returned when the request would violate a uniqueness or state constraint\n(e.g. updating a soft-deleted conversion, racing creates that produce the\nsame identity)."
      },
      "RampCheckoutFrom": {
        "type": "object",
        "description": "Source side of a Ramp checkout — the asset the user pays with.",
        "properties": {
          "symbol": {
            "description": "Asset ticker symbol (e.g. \"USD\").",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSymbol"
              }
            ]
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "xstock"]
          },
          "method": {
            "description": "Funding method used for the source side.",
            "type": "string"
          },
          "amount": {
            "description": "Amount to spend, denominated in the source asset.",
            "$ref": "#/components/schemas/BigDecimal"
          }
        },
        "required": ["symbol", "type", "method", "amount"]
      },
      "RampCheckoutTo": {
        "type": "object",
        "description": "Destination side of a Ramp checkout — the asset the user receives.",
        "properties": {
          "symbol": {
            "description": "Asset ticker symbol (e.g. \"BTC\").",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetSymbol"
              }
            ]
          },
          "type": {
            "description": "Classification of the asset.",
            "type": "string",
            "enum": ["fiat", "crypto", "stablecoin", "xstock"]
          },
          "method": {
            "description": "Withdrawal method for the destination asset.",
            "type": "string"
          },
          "network": {
            "description": "Withdrawal network identifier.",
            "type": ["string", "null"]
          },
          "address": {
            "description": "Destination wallet address for the crypto withdrawal.",
            "type": ["string", "null"]
          },
          "memo": {
            "description": "Memo/tag/note for the crypto withdrawal.",
            "type": ["string", "null"]
          }
        },
        "required": ["symbol", "type", "method"]
      },
      "VerificationId": {
        "type": "string",
        "description": "Public identifier for a Payward-managed verification.",
        "pattern": "^PV[A-Z0-9]{5}-[A-Z0-9]{5}-[A-Z0-9]{6}$",
        "minLength": 20,
        "maxLength": 20,
        "example": "PVABCDE-FGHIJ-KLMNOP"
      },
      "VerificationFailureReasonCode": {
        "type": "string",
        "description": "Machine-readable failure reason code. Treat this value as informational unless your Payward integration defines specific handling.",
        "example": "verification_failed"
      },
      "VerificationFailureReason": {
        "type": "object",
        "description": "Grouped failure reason for a verification.",
        "properties": {
          "code": {
            "$ref": "#/components/schemas/VerificationFailureReasonCode"
          },
          "details": {
            "type": "array",
            "description": "Additional explanatory text. Display these strings, but do not parse or branch on them.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 1024
            },
            "maxItems": 32,
            "example": ["Verification could not be completed."]
          }
        },
        "required": ["code"]
      },
      "StartVerificationDocumentUrl": {
        "type": "string",
        "description": "HTTPS presigned URL to a document or image on an allowlisted domain. The filename is extracted from the URL path and must meet the URL and file requirements.",
        "minLength": 1,
        "maxLength": 4096,
        "format": "uri",
        "pattern": "^https://",
        "example": "https://your-allowlisted-bucket.s3.amazonaws.com/front.png?X-Amz-Algorithm=AWS4-HMAC-SHA256"
      },
      "StartVerificationFullName": {
        "type": "object",
        "description": "User's full name.",
        "properties": {
          "first_name": {
            "description": "User's first name.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "middle_name": {
            "description": "User's middle name.",
            "type": ["string", "null"],
            "minLength": 1,
            "maxLength": 256
          },
          "last_name": {
            "description": "User's last name.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          }
        },
        "required": ["first_name", "last_name"]
      },
      "StartVerificationIdentity": {
        "type": "object",
        "description": "The identity of the person in the document.",
        "properties": {
          "full_name": {
            "$ref": "#/components/schemas/StartVerificationFullName"
          },
          "birth": {
            "description": "User birth details.",
            "type": "object",
            "properties": {
              "date": {
                "description": "User's date of birth.",
                "type": "string",
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "format": "date",
                "example": "1990-01-31"
              }
            },
            "required": ["date"]
          }
        },
        "required": ["full_name", "birth"]
      },
      "StartVerificationAddress": {
        "type": "object",
        "description": "The address captured in this document.",
        "properties": {
          "city": {
            "description": "City.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "postal_code": {
            "description": "Postal code.",
            "type": "string",
            "minLength": 1,
            "maxLength": 32
          },
          "province": {
            "description": "Province or state.",
            "type": ["string", "null"],
            "minLength": 1,
            "maxLength": 128
          },
          "country": {
            "description": "Country.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CountryCode"
              }
            ]
          },
          "line1": {
            "description": "Address line 1.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "line2": {
            "description": "Address line 2.",
            "type": ["string", "null"],
            "minLength": 1,
            "maxLength": 256
          }
        },
        "required": ["city", "country", "line1", "postal_code"]
      },
      "StartIdentityDocumentVerificationMetadata": {
        "description": "Metadata about the identity document to verify.",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "identity": {
            "$ref": "#/components/schemas/StartVerificationIdentity"
          },
          "document_type": {
            "description": "Type of identity document.",
            "type": "string",
            "enum": ["passport", "drivers_license", "id_card", "residence_card", "special_permanent_residence_card"]
          },
          "document_number": {
            "description": "Number of the document, such as a driver's license number.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "issuing_country": {
            "description": "Country of issuance of the identity document.",
            "allOf": [
              {
                "$ref": "#/components/schemas/CountryCode"
              }
            ]
          },
          "nationality": {
            "description": "Nationality of the identified person according to the document.",
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CountryCode"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "expiration_date": {
            "description": "Optional expiration date of the verification when it is no longer valid in ISO 8601 format.",
            "type": ["string", "null"],
            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
            "format": "date",
            "example": "2028-03-13"
          }
        },
        "required": ["identity", "document_type", "document_number", "issuing_country"]
      },
      "StartResidenceDocumentVerificationMetadata": {
        "description": "Metadata about the residence document to verify.",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "address": {
            "$ref": "#/components/schemas/StartVerificationAddress"
          },
          "document_type": {
            "description": "Type of residence verification document.",
            "type": "string",
            "enum": [
              "bank_statement",
              "credit_card_statement",
              "employer_letter_or_work_contract",
              "government_issued_document",
              "home_or_rental_insurance",
              "internet_or_cable_bill",
              "mobile_phone_bill",
              "mortgage_statement",
              "official_government_letter",
              "passport_address_page",
              "rental_or_lease_agreement",
              "residence_certificate",
              "social_insurance_payment_receipt",
              "tax_receipt",
              "tax_return",
              "utility_bill",
              "other"
            ]
          },
          "document_number": {
            "description": "Number of the document, when available.",
            "type": ["string", "null"],
            "minLength": 1,
            "maxLength": 256
          },
          "expiration_date": {
            "description": "Optional expiration date of the verification when it is no longer valid in ISO 8601 format.",
            "type": ["string", "null"],
            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
            "format": "date",
            "example": "2028-03-13"
          }
        },
        "required": ["address", "document_type"]
      },
      "StartIdentityDocumentVerificationRequest": {
        "type": "object",
        "description": "Start an identity document verification from front and optional back document HTTPS URLs.",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "enum": ["identity_document"]
          },
          "metadata": {
            "$ref": "#/components/schemas/StartIdentityDocumentVerificationMetadata"
          },
          "front_url": {
            "description": "Presigned URL to the front side of the identity document. The filename is extracted from the URL path and must meet the URL and file requirements.",
            "allOf": [
              {
                "$ref": "#/components/schemas/StartVerificationDocumentUrl"
              }
            ]
          },
          "back_url": {
            "description": "Presigned URL to the back side of the identity document. The filename is extracted from the URL path and must meet the URL and file requirements. Passport submissions must omit this field.",
            "anyOf": [
              {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/StartVerificationDocumentUrl"
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": ["metadata", "type", "front_url"]
      },
      "StartResidenceDocumentVerificationRequest": {
        "type": "object",
        "description": "Start a residence document verification from a document HTTPS URL.",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "enum": ["residence_document"]
          },
          "metadata": {
            "$ref": "#/components/schemas/StartResidenceDocumentVerificationMetadata"
          },
          "document_url": {
            "description": "Presigned URL to the residence document. The filename is extracted from the URL path and must meet the URL and file requirements.",
            "allOf": [
              {
                "$ref": "#/components/schemas/StartVerificationDocumentUrl"
              }
            ]
          }
        },
        "required": ["metadata", "type", "document_url"]
      },
      "StartLivenessVerificationRequest": {
        "type": "object",
        "description": "Start a liveness verification from three-point HTTPS image URLs.",
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "enum": ["liveness"]
          },
          "left_url": {
            "description": "Presigned URL to the user's left-facing liveness image. The filename is extracted from the URL path and must meet the URL and file requirements.",
            "allOf": [
              {
                "$ref": "#/components/schemas/StartVerificationDocumentUrl"
              }
            ]
          },
          "center_url": {
            "description": "Presigned URL to the user's center-facing liveness image. The filename is extracted from the URL path and must meet the URL and file requirements.",
            "allOf": [
              {
                "$ref": "#/components/schemas/StartVerificationDocumentUrl"
              }
            ]
          },
          "right_url": {
            "description": "Presigned URL to the user's right-facing liveness image. The filename is extracted from the URL path and must meet the URL and file requirements.",
            "allOf": [
              {
                "$ref": "#/components/schemas/StartVerificationDocumentUrl"
              }
            ]
          }
        },
        "required": ["type", "left_url", "center_url", "right_url"]
      },
      "StartUrlVerificationRequest": {
        "description": "Verification request body. The `type` discriminator selects exactly one start verification payload.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/StartIdentityDocumentVerificationRequest"
          },
          {
            "$ref": "#/components/schemas/StartResidenceDocumentVerificationRequest"
          },
          {
            "$ref": "#/components/schemas/StartLivenessVerificationRequest"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "identity_document": "#/components/schemas/StartIdentityDocumentVerificationRequest",
            "residence_document": "#/components/schemas/StartResidenceDocumentVerificationRequest",
            "liveness": "#/components/schemas/StartLivenessVerificationRequest"
          }
        }
      },
      "StartUrlVerificationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "verification_id": {
                "$ref": "#/components/schemas/VerificationId"
              }
            },
            "required": ["verification_id"]
          }
        },
        "required": ["data"]
      },
      "StartHostedVerificationRequest": {
        "type": "object",
        "description": "Empty request body for starting a hosted verification UI flow.",
        "additionalProperties": false,
        "example": {}
      },
      "HostedVerificationLaunch": {
        "type": "object",
        "description": "Fields used to launch the hosted verification UI.",
        "properties": {
          "inquiry_id": {
            "type": "string",
            "description": "Opaque hosted verification identifier.",
            "minLength": 1,
            "example": "hosted_verification_test"
          },
          "session_token": {
            "type": "string",
            "description": "Session token used to load the hosted verification UI.",
            "minLength": 1,
            "example": "hosted_session_test"
          },
          "environment_id": {
            "type": "string",
            "description": "Hosted UI environment identifier.",
            "minLength": 1,
            "example": "hosted_ui_test"
          }
        },
        "required": ["inquiry_id", "session_token", "environment_id"]
      },
      "StartedHostedVerification": {
        "allOf": [
          {
            "$ref": "#/components/schemas/HostedVerificationLaunch"
          },
          {
            "type": "object",
            "properties": {
              "verification_id": {
                "$ref": "#/components/schemas/VerificationId"
              }
            },
            "required": ["verification_id"]
          }
        ]
      },
      "StartHostedVerificationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/StartedHostedVerification"
          }
        },
        "required": ["data"]
      },
      "ResumeHostedVerificationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HostedVerificationLaunch"
          }
        },
        "required": ["data"]
      },
      "HostedVerificationOneTimeLink": {
        "type": "object",
        "properties": {
          "url": {
            "description": "Full one-time-link URL for the hosted verification UI.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Uri"
              }
            ],
            "example": "https://verify.example.com/verify?code=us1-handle"
          },
          "url_short": {
            "description": "Shortened one-time-link URL issued alongside `url`.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Uri"
              }
            ],
            "example": "https://verify.example.com/v/HANDLE"
          }
        },
        "required": ["url", "url_short"]
      },
      "CreateHostedVerificationOneTimeLinkResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/HostedVerificationOneTimeLink"
          }
        },
        "required": ["data"]
      },
      "GetVerificationResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VerificationSummary"
          }
        },
        "required": ["data"]
      },
      "ListVerificationsResponse": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "verifications": {
                "type": "array",
                "description": "Verification summaries in reverse chronological order.",
                "items": {
                  "$ref": "#/components/schemas/VerificationSummary"
                },
                "maxItems": 100
              }
            },
            "required": ["verifications"]
          }
        },
        "required": ["data"]
      },
      "VerificationType": {
        "type": "string",
        "description": "Document role covered by a verification.",
        "enum": ["proof_of_identity", "proof_of_address", "proof_of_liveness"]
      },
      "VerificationSummary": {
        "type": "object",
        "description": "One verification recorded by the server.",
        "additionalProperties": false,
        "properties": {
          "verification_id": {
            "$ref": "#/components/schemas/VerificationId"
          },
          "types": {
            "type": "array",
            "description": "Document roles this verification covers. Hosted verifications cover identity, address, and liveness in one record. URL verifications cover one role.",
            "items": {
              "$ref": "#/components/schemas/VerificationType"
            },
            "minItems": 1,
            "maxItems": 3,
            "uniqueItems": true,
            "example": ["proof_of_identity"]
          },
          "method": {
            "$ref": "#/components/schemas/VerificationMethod"
          },
          "status": {
            "$ref": "#/components/schemas/VerificationStatus"
          },
          "reasons": {
            "type": "array",
            "description": "Failure reasons accompanying the current status. Present when the verification has failure details.",
            "items": {
              "$ref": "#/components/schemas/VerificationFailureReason"
            },
            "maxItems": 20
          },
          "created_at": {
            "description": "Server timestamp when the verification was first recorded.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ],
            "example": "2026-05-20T14:30:00Z"
          },
          "updated_at": {
            "description": "Server timestamp when the verification was last updated.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ],
            "example": "2026-05-20T14:45:00Z"
          }
        },
        "required": ["verification_id", "types", "method", "status", "created_at", "updated_at"]
      },
      "VerificationMethod": {
        "type": "string",
        "description": "How the verification evidence was collected.",
        "enum": ["hosted", "url"]
      },
      "VerificationStatus": {
        "type": "string",
        "description": "Lifecycle status of a verification.",
        "enum": ["started", "pending", "completed", "failed"]
      },
      "ConversionLimitReachedErrorResponse": {
        "description": "The maximum number of conversion rules was reached.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [409]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["conversion_limit_reached"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "RuleAlreadyDeletedErrorResponse": {
        "description": "The conversion rule was already deleted.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [409]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["rule_already_deleted"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "WalletAdditionalVerificationRequiredErrorResponse": {
        "description": "The wallet requires additional verification before it can be used.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [409]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["wallet_additional_verification_required"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "ConversionInvalidWithdrawalAddressCause": {
        "description": "A single contributor to an invalid withdrawal address error. Each cause names one missing or invalid beneficiary bank field.",
        "type": "object",
        "properties": {
          "field": {
            "description": "Dot-notation path to the offending request field (e.g. `to.bank_account.bic`).",
            "type": "string"
          },
          "message": {
            "description": "Human-readable explanation of why the field is required or invalid for the chosen withdrawal rail.",
            "type": "string"
          }
        }
      },
      "ConversionInvalidWithdrawalAddressErrorResponse": {
        "description": "The off-ramp destination bank account is missing or has an invalid field for the chosen withdrawal rail (e.g. `bic` is required for SEPA but absent). `causes[]` names each offending field and is non-empty.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": ["conversions_error"]
              },
              "status": {
                "type": "integer",
                "format": "uint16",
                "enum": [400]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["conversion_invalid_withdrawal_address"]
              },
              "doc_url": {
                "type": ["string", "null"],
                "format": "uri"
              },
              "causes": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#/components/schemas/ConversionInvalidWithdrawalAddressCause"
                },
                "description": "One entry per missing or invalid beneficiary bank field."
              }
            },
            "required": ["type", "status", "instance", "code", "causes"]
          }
        },
        "required": ["error"]
      },
      "UnimplementedErrorResponse": {
        "description": "The operation is not implemented by the upstream service.",
        "type": "object",
        "properties": {
          "error": {
            "description": "Error details.",
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "status": {
                "type": "integer",
                "format": "int32",
                "enum": [501]
              },
              "instance": {
                "type": "string"
              },
              "code": {
                "type": "string",
                "enum": ["unimplemented"]
              },
              "doc_url": {
                "type": "string",
                "format": "uri"
              },
              "causes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            },
            "required": ["type", "status", "instance", "code"]
          }
        },
        "required": ["error"]
      },
      "AllocationInProgressErrorResponse": {
        "description": "Another auto-earn preference change is already in progress for this account.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [409]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["allocation_in_progress"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "AccountNotFoundErrorResponse": {
        "description": "The requested account does not exist or is not available to the caller.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [404]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["account_not_found"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "NotEligibleErrorResponse": {
        "description": "The account is not eligible for the requested auto-earn yield source.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [400]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["not_eligible"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "SettlementReportNotFoundErrorResponse": {
        "description": "No settlement report exists for the supplied identifier.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [404]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["settlement_report_not_found"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "UserNotFoundErrorResponse": {
        "description": "The requested user does not exist.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [404]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["user_not_found"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "PwsGeneralError": {
        "description": "Standard PWS API error object for non-validation failures.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsErrorBase"
          },
          {
            "type": "object",
            "properties": {
              "causes": {
                "description": "Additional error details, when present.",
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        ]
      },
      "PwsGeneralErrorEnvelope": {
        "description": "Error envelope for operational or domain failures.",
        "type": "object",
        "required": ["error"],
        "properties": {
          "error": {
            "$ref": "#/components/schemas/PwsGeneralError"
          }
        }
      },
      "PwsValidationError": {
        "description": "Standard PWS API error object for request validation failures.",
        "type": "object",
        "required": ["type", "status", "instance", "code"],
        "properties": {
          "type": {
            "description": "Machine-readable error class.",
            "type": "string"
          },
          "status": {
            "description": "HTTP status code returned for this error.",
            "type": "integer",
            "format": "int32"
          },
          "instance": {
            "description": "Request identifier for this specific error occurrence.",
            "type": "string"
          },
          "code": {
            "description": "Stable machine-readable error code.",
            "type": "string"
          },
          "doc_url": {
            "description": "Optional link to documentation for this error.",
            "type": "string",
            "format": "uri"
          },
          "causes": {
            "description": "Validation failures that contributed to the error.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PwsErrorCause"
            }
          }
        }
      },
      "PwsValidationErrorEnvelope": {
        "description": "Error envelope for request validation failures.",
        "type": "object",
        "required": ["error"],
        "properties": {
          "error": {
            "$ref": "#/components/schemas/PwsValidationError"
          }
        }
      },
      "PwsErrorBase": {
        "description": "Common fields present on every PWS API error object.",
        "type": "object",
        "required": ["type", "status", "instance", "code"],
        "properties": {
          "type": {
            "description": "Machine-readable error class.",
            "type": "string"
          },
          "status": {
            "description": "HTTP status code returned for this error.",
            "type": "integer",
            "format": "int32"
          },
          "instance": {
            "description": "Request identifier for this specific error occurrence.",
            "type": "string"
          },
          "code": {
            "description": "Stable machine-readable error code.",
            "type": "string"
          },
          "doc_url": {
            "description": "Optional link to documentation for this error.",
            "type": "string",
            "format": "uri"
          }
        }
      },
      "ForbiddenError": {
        "description": "The authenticated caller is not allowed to perform this operation.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [403]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["forbidden"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "PwsErrorCause": {
        "description": "A single request validation failure.",
        "type": "object",
        "required": ["field", "message"],
        "properties": {
          "field": {
            "description": "Dot-notation path to the offending request field.",
            "type": "string"
          },
          "message": {
            "description": "Human-readable explanation of the failed validation rule.",
            "type": "string"
          }
        }
      },
      "BadRequestError": {
        "description": "Request validation failed or the request could not be processed.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsValidationErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsValidationError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [400]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["bad_request"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "UnauthenticatedError": {
        "description": "Authentication credentials are missing, invalid, or not accepted.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [401]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["unauthenticated"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "UnimplementedError": {
        "description": "The operation is not implemented by the upstream service.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [501]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["unimplemented"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "InternalError": {
        "description": "An unexpected server-side error occurred.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [500]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["internal"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "DeadlineExceededError": {
        "description": "The upstream service did not complete the request before the deadline.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [504]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["deadline_exceeded"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "ResourceExhaustedError": {
        "description": "The request was rate limited or a resource quota was exhausted.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [429]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["resource_exhausted"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "UnavailableError": {
        "description": "The service is temporarily unavailable.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [503]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["unavailable"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "ConversionsNotFoundErrorResponse": {
        "description": "The requested resource does not exist.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [404]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["not_found"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "PriceTriggerSwapRequested": {
        "description": "Trade and trigger condition requested by the client when the swap was created.",
        "type": "object",
        "properties": {
          "trade": {
            "description": "Trade to execute when the condition fires.",
            "allOf": [
              {
                "$ref": "#/components/schemas/PriceTriggerSwapRequestedTrade"
              }
            ]
          },
          "when": {
            "description": "Price condition that triggers the trade.",
            "allOf": [
              {
                "$ref": "#/components/schemas/PriceTriggerSwapConditionResponse"
              }
            ]
          }
        },
        "required": ["trade", "when"]
      },
      "PriceTriggerSwapRequestedTrade": {
        "description": "Requested trade attached to a price trigger swap. Exactly one of `from`/`to` carries `amount`; the other side is filled when the trade executes.",
        "type": "object",
        "properties": {
          "from": {
            "description": "Requested source asset and optional fixed amount.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetAmountResponse"
              }
            ]
          },
          "to": {
            "description": "Requested destination asset and optional fixed amount.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetAmountResponse"
              }
            ]
          },
          "fee": {
            "description": "Partner fee applied to the trade.",
            "allOf": [
              {
                "$ref": "#/components/schemas/PartnerFee"
              }
            ]
          }
        },
        "required": ["from", "to", "fee"]
      },
      "PriceTriggerSwapExecuted": {
        "description": "Realized trade details for an executed price trigger swap. Present once `status` is `completed`.",
        "type": "object",
        "properties": {
          "from": {
            "description": "Source asset and amount executed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetAmountResponse"
              }
            ]
          },
          "to": {
            "description": "Destination asset and amount received.",
            "allOf": [
              {
                "$ref": "#/components/schemas/AssetAmountResponse"
              }
            ]
          },
          "rate": {
            "description": "Exchange rate at which the trade executed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Rate"
              }
            ]
          },
          "fees": {
            "description": "Fees charged on the executed trade.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Fees"
              }
            ]
          },
          "executed_at": {
            "description": "Time at which the trade executed.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          }
        },
        "required": ["from", "to", "rate", "fees", "executed_at"]
      },
      "PriceTriggerSwapFailureReason": {
        "description": "Reason a price trigger swap failed. Present only when `status` is `failed`.",
        "type": "string",
        "enum": [
          "user_locked",
          "expired_payment_method",
          "asset_unavailable",
          "pair_unavailable",
          "retries_exhausted",
          "funding_method_deleted",
          "other"
        ]
      },
      "WebhookNotFoundErrorResponse": {
        "description": "The requested webhook does not exist or is not available to the caller.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [404]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["webhook_not_found"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "ConversionLifecyclePayload": {
        "title": "ConversionLifecyclePayload",
        "type": "object",
        "required": ["chain_references", "conversion_id", "observed_at", "status", "transaction_id", "user_id"],
        "properties": {
          "transaction_id": {
            "description": "Conversion transaction id.\n\nStable public conversion transaction id when the source event carries enough conversion context. Falls back to the public `quote_id` for older ramp events without conversion transaction context.",
            "type": "string"
          },
          "conversion_id": {
            "description": "Public conversion rule id.",
            "type": "string"
          },
          "user_id": {
            "description": "Public id of the user whose conversion transaction changed.",
            "type": "string"
          },
          "status": {
            "description": "Public conversion transaction lifecycle status.",
            "type": "string"
          },
          "observed_at": {
            "description": "RFC3339 UTC time the transition was observed by the processor.",
            "type": "string"
          },
          "chain_references": {
            "description": "Funding transaction references observed in the source lifecycle.",
            "type": "object",
            "properties": {
              "deposit_txid": {
                "description": "Inbound funding/deposit transaction id.",
                "type": "string"
              },
              "withdraw_txid": {
                "description": "Outbound funding/withdrawal transaction id.",
                "type": "string"
              },
              "blockchain_transaction_id": {
                "description": "On-chain transaction id or hash for a completed crypto withdrawal. Distinct from `withdraw_txid`.",
                "type": "string"
              }
            }
          },
          "deposit_reference": {
            "description": "User payment reference from the inbound funding deposit, when present.",
            "type": "string"
          },
          "error_code": {
            "description": "Stable public failure category when the conversion lifecycle transition failed.",
            "type": "string",
            "enum": [
              "amount_too_small",
              "quote_expired",
              "destination_rejected",
              "wallet_not_whitelisted",
              "wallet_verification_method_not_supported",
              "travel_rule_data_missing",
              "unknown"
            ]
          },
          "deposit_amount": {
            "description": "Inbound deposit amount as a decimal string, when present.",
            "type": "string"
          },
          "deposit_currency": {
            "description": "Inbound deposit asset symbol, when present.",
            "type": "string"
          },
          "source_amount": {
            "description": "Quote source amount as a decimal string, when present.",
            "type": "string"
          },
          "source_currency": {
            "description": "Quote source asset symbol, when present.",
            "type": "string"
          },
          "destination_currency": {
            "description": "Quote destination asset symbol, when present.",
            "type": "string"
          },
          "withdrawal_amount": {
            "description": "Outbound withdrawal amount as a decimal string, when present.",
            "type": "string"
          },
          "withdrawal_currency": {
            "description": "Outbound withdrawal asset symbol, when present.",
            "type": "string"
          },
          "network": {
            "description": "Crypto delivery network when the conversion target is crypto.",
            "type": "string"
          },
          "destination_address": {
            "description": "Crypto destination address. Present only for crypto withdrawals; never a fiat destination, tag, or memo.",
            "type": "string"
          }
        },
        "description": "Payload shared by all conversion transaction lifecycle events."
      },
      "PortfolioTransactionCorePayload": {
        "title": "PortfolioTransactionCorePayload",
        "type": "object",
        "required": ["account_id", "timestamp", "transaction_id", "user_id"],
        "properties": {
          "transaction_id": {
            "description": "Public Portfolio transaction id. Matches the `id` returned by the Portfolio Transactions endpoint.",
            "type": "string"
          },
          "user_id": {
            "description": "Public id of the user whose Portfolio transaction changed.",
            "type": "string"
          },
          "account_id": {
            "description": "Public id of the account that owns the Portfolio transaction.",
            "type": "string"
          },
          "timestamp": {
            "description": "RFC3339 UTC timestamp of the Portfolio transaction.",
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "description": "Current Portfolio transaction status, when available.",
            "type": "string",
            "enum": ["uncategorized", "in_progress", "successful", "failed"]
          }
        },
        "description": "Stable identifiers and lifecycle data shared by Portfolio transaction webhook events."
      },
      "SwapTransactionChangedPayload": {
        "title": "SwapTransactionChangedPayload",
        "allOf": [
          {
            "$ref": "#/components/schemas/PortfolioTransactionCorePayload"
          },
          {
            "type": "object",
            "properties": {
              "quote_id": {
                "description": "Quote associated with the swap, when available.",
                "type": "string"
              }
            }
          }
        ],
        "description": "A Portfolio swap transaction was created or updated."
      },
      "PriceTriggerSwapTransactionChangedPayload": {
        "title": "PriceTriggerSwapTransactionChangedPayload",
        "allOf": [
          {
            "$ref": "#/components/schemas/PortfolioTransactionCorePayload"
          },
          {
            "type": "object",
            "properties": {
              "quote_id": {
                "description": "Quote associated with the price trigger swap, when available.",
                "type": "string"
              }
            }
          }
        ],
        "description": "A Portfolio price trigger swap transaction was created or updated."
      },
      "EarnRewardTransactionChangedPayload": {
        "title": "EarnRewardTransactionChangedPayload",
        "allOf": [
          {
            "$ref": "#/components/schemas/PortfolioTransactionCorePayload"
          },
          {
            "type": "object",
            "properties": {
              "strategy_id": {
                "description": "Earn strategy that generated the reward, when available.",
                "type": "string"
              },
              "reward_id": {
                "description": "Earn reward identifier, when available.",
                "type": "string"
              }
            }
          }
        ],
        "description": "A Portfolio earn reward transaction was created or updated."
      },
      "DepositTransactionChangedPayload": {
        "title": "DepositTransactionChangedPayload",
        "allOf": [
          {
            "$ref": "#/components/schemas/PortfolioTransactionCorePayload"
          },
          {
            "type": "object",
            "properties": {
              "funding_reference": {
                "description": "Funding-system reference used by Portfolio, when available.",
                "type": "string"
              },
              "crypto_transaction_id": {
                "description": "On-chain transaction id or hash, when applicable.",
                "type": "string"
              }
            }
          }
        ],
        "description": "A Portfolio deposit transaction was created or updated."
      },
      "WithdrawalTransactionChangedPayload": {
        "title": "WithdrawalTransactionChangedPayload",
        "allOf": [
          {
            "$ref": "#/components/schemas/PortfolioTransactionCorePayload"
          },
          {
            "type": "object",
            "properties": {
              "funding_reference": {
                "description": "Funding-system reference used by Portfolio, when available.",
                "type": "string"
              },
              "crypto_transaction_id": {
                "description": "On-chain transaction id or hash, when applicable.",
                "type": "string"
              }
            }
          }
        ],
        "description": "A Portfolio withdrawal transaction was created or updated."
      },
      "TransferTransactionChangedPayload": {
        "title": "TransferTransactionChangedPayload",
        "allOf": [
          {
            "$ref": "#/components/schemas/PortfolioTransactionCorePayload"
          },
          {
            "type": "object",
            "properties": {
              "transfer_id": {
                "description": "Public transfer id returned by the Transfers API, when available.",
                "type": "string"
              }
            }
          }
        ],
        "description": "A Portfolio transfer transaction was created or updated."
      },
      "QuoteExecutedPayload": {
        "title": "QuoteExecutedPayload",
        "type": "object",
        "required": ["account_id", "quote_id", "user_id"],
        "properties": {
          "quote_id": {
            "description": "Quote id.",
            "type": "string"
          },
          "user_id": {
            "description": "Public id of the user the quote was executed for.",
            "type": "string"
          },
          "account_id": {
            "description": "Public account id.",
            "type": "string"
          },
          "executed_at": {
            "description": "RFC3339 UTC time the quote was executed by PTL.",
            "type": "string"
          }
        },
        "description": "Quote successfully executed against the partner account."
      },
      "QuoteCancelledPayload": {
        "title": "QuoteCancelledPayload",
        "type": "object",
        "required": ["account_id", "quote_id", "user_id"],
        "properties": {
          "quote_id": {
            "description": "Quote id.",
            "type": "string"
          },
          "user_id": {
            "description": "Public id of the user the quote was cancelled for.",
            "type": "string"
          },
          "account_id": {
            "description": "Public account id.",
            "type": "string"
          }
        },
        "description": "Quote cancelled before execution."
      },
      "QuoteExecutionFailedPayload": {
        "title": "QuoteExecutionFailedPayload",
        "type": "object",
        "required": ["account_id", "quote_id", "user_id"],
        "properties": {
          "quote_id": {
            "description": "Quote id.",
            "type": "string"
          },
          "user_id": {
            "description": "Public id of the user the failed quote was for.",
            "type": "string"
          },
          "account_id": {
            "description": "Public account id.",
            "type": "string"
          }
        },
        "description": "Quote execution attempted but failed."
      },
      "UserVerifiedPayload": {
        "title": "UserVerifiedPayload",
        "type": "object",
        "required": ["timestamp", "user_id"],
        "properties": {
          "user_id": {
            "description": "Public id of the user who completed verification.",
            "type": "string"
          },
          "timestamp": {
            "description": "RFC3339 UTC time the verification was observed by the processor.",
            "type": "string"
          }
        },
        "description": "The user completed verification."
      },
      "UserVerificationNeededPayload": {
        "title": "UserVerificationNeededPayload",
        "type": "object",
        "required": ["user_id"],
        "properties": {
          "user_id": {
            "description": "Public id of the user that needs verification.",
            "type": "string"
          }
        },
        "description": "The user needs to complete verification."
      },
      "UserVerificationFailedPayload": {
        "title": "UserVerificationFailedPayload",
        "type": "object",
        "required": ["timestamp", "user_id", "verification_id"],
        "properties": {
          "user_id": {
            "description": "Public id of the user whose verification submission was rejected.",
            "type": "string"
          },
          "verification_id": {
            "description": "PaywardVerificationId of the submission that failed.",
            "type": "string"
          },
          "timestamp": {
            "description": "RFC3339 UTC time the transition was recorded by the producer, falling back to the processor's observation time when the event omits one.",
            "type": "string"
          }
        },
        "description": "The user's verification submission was rejected."
      },
      "UserDisabledPayload": {
        "title": "UserDisabledPayload",
        "type": "object",
        "required": ["timestamp", "user_id"],
        "properties": {
          "user_id": {
            "description": "Public id of the user whose account was disabled.",
            "type": "string"
          },
          "timestamp": {
            "description": "RFC3339 UTC time the disablement was observed by the processor.",
            "type": "string"
          }
        },
        "description": "The user's account became disabled."
      },
      "UserClosedPayload": {
        "title": "UserClosedPayload",
        "type": "object",
        "required": ["timestamp", "user_id"],
        "properties": {
          "user_id": {
            "description": "Public id of the user whose account was closed.",
            "type": "string"
          },
          "timestamp": {
            "description": "RFC3339 UTC time the closure was observed by the processor.",
            "type": "string"
          }
        },
        "description": "The user's account was closed."
      },
      "CreateTravelRuleVerificationBody": {
        "description": "Request to create a hosted declaration or self-attestation verification.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/HostedDeclarationVerificationBody"
          },
          {
            "$ref": "#/components/schemas/SelfAttestationVerificationBody"
          }
        ],
        "discriminator": {
          "propertyName": "method",
          "mapping": {
            "hosted_declaration": "#/components/schemas/HostedDeclarationVerificationBody",
            "self_attestation": "#/components/schemas/SelfAttestationVerificationBody"
          }
        }
      },
      "HostedDeclarationVerificationBody": {
        "description": "Request to verify a hosted wallet through a hosted declaration.",
        "type": "object",
        "additionalProperties": false,
        "required": ["address", "method"],
        "properties": {
          "address": {
            "description": "Wallet address to verify.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "method": {
            "description": "Hosted declaration discriminator.",
            "type": "string",
            "enum": ["hosted_declaration"]
          }
        }
      },
      "SelfAttestationVerificationBody": {
        "description": "Request to verify a self-hosted wallet through self-attestation.",
        "type": "object",
        "additionalProperties": false,
        "required": ["address", "method", "evidence"],
        "properties": {
          "address": {
            "description": "Wallet address to verify.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "method": {
            "description": "Self-attestation discriminator.",
            "type": "string",
            "enum": ["self_attestation"]
          },
          "evidence": {
            "description": "Evidence that the user confirmed ownership and completed partner-side two-factor authentication.",
            "allOf": [
              {
                "$ref": "#/components/schemas/SelfAttestationEvidence"
              }
            ]
          }
        }
      },
      "SelfAttestationEvidence": {
        "description": "Partner-collected evidence supporting a self-hosted wallet verification.",
        "type": "object",
        "required": [
          "ownership_confirmed",
          "two_factor_completed",
          "two_factor_method",
          "attestation_text",
          "user_confirmed_at"
        ],
        "properties": {
          "ownership_confirmed": {
            "description": "Whether the user confirmed that they own or control the wallet.",
            "type": "boolean"
          },
          "two_factor_completed": {
            "description": "Whether the partner confirmed that the user completed two-factor authentication.",
            "type": "boolean"
          },
          "two_factor_method": {
            "description": "Two-factor authentication method completed by the user.",
            "allOf": [
              {
                "$ref": "#/components/schemas/TwoFactorMethod"
              }
            ]
          },
          "attestation_text": {
            "description": "Ownership statement confirmed by the user.",
            "type": "string",
            "minLength": 1,
            "maxLength": 4096
          },
          "user_confirmed_at": {
            "description": "Time at which the user confirmed the ownership statement.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          }
        }
      },
      "CreateTravelRuleVerificationEnvelope": {
        "description": "Response returned after creating a Travel Rule verification case.",
        "type": "object",
        "required": ["data"],
        "properties": {
          "data": {
            "description": "Travel Rule verification case.",
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleVerification"
              }
            ]
          }
        }
      },
      "GetTravelRuleVerificationEnvelope": {
        "description": "Response returned when reading a Travel Rule verification case.",
        "type": "object",
        "required": ["data"],
        "properties": {
          "data": {
            "description": "Travel Rule verification case.",
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleVerification"
              }
            ]
          }
        }
      },
      "TravelRuleVerification": {
        "description": "Travel Rule verification case for a wallet address.",
        "type": "object",
        "required": ["verification_id", "wallet_type", "status"],
        "properties": {
          "verification_id": {
            "description": "Stable PWS identifier for the verification case.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "wallet_type": {
            "description": "Type of wallet being verified.",
            "allOf": [
              {
                "$ref": "#/components/schemas/VerificationWalletType"
              }
            ]
          },
          "method": {
            "description": "Verification method submitted or started for this case, when one has been selected.",
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleVerificationMethod"
              }
            ]
          },
          "status": {
            "description": "Current verification status.",
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleVerificationStatus"
              }
            ]
          },
          "created_at": {
            "description": "Time at which PWS created the verification case projection.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          },
          "updated_at": {
            "description": "Time at which PWS last updated the verification case projection.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DateTime"
              }
            ]
          }
        }
      },
      "TravelRuleVerificationStatus": {
        "description": "Partner-facing proactive verification status. Pending is reserved for recovery when the Travel submission outcome is uncertain.",
        "type": "string",
        "enum": ["pending", "verified", "failed"]
      },
      "VerificationWalletType": {
        "description": "Wallet type for the verification case.",
        "type": "string",
        "enum": ["hosted", "self_hosted"]
      },
      "TravelRuleVerificationMethod": {
        "description": "Verification method for the case.",
        "type": "string",
        "enum": ["hosted_declaration", "self_attestation"]
      },
      "TwoFactorMethod": {
        "description": "Partner-side two-factor authentication method completed by the user.",
        "type": "string",
        "enum": ["otp", "passkey"]
      },
      "VerificationNotFoundError": {
        "description": "No Travel Rule verification case exists for the supplied identifier.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [404]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["verification_not_found"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "WalletTypeMismatchError": {
        "description": "The wallet address already has a verification with a different wallet type.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [409]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["wallet_type_mismatch"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "VerificationNotEnabledError": {
        "description": "Travel Rule address verification is not enabled for the user.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [409]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["verification_not_enabled"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "SatoshiTestRequiredError": {
        "description": "The address requires a Satoshi test and cannot use a weaker verification method.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [409]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["satoshi_test_required"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "VerificationRejectedError": {
        "description": "Travel Rule rejected the submitted verification.",
        "allOf": [
          {
            "$ref": "#/components/schemas/PwsGeneralErrorEnvelope"
          },
          {
            "type": "object",
            "required": ["error"],
            "properties": {
              "error": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PwsGeneralError"
                  },
                  {
                    "type": "object",
                    "required": ["status", "code"],
                    "properties": {
                      "status": {
                        "type": "integer",
                        "format": "int32",
                        "enum": [409]
                      },
                      "code": {
                        "type": "string",
                        "enum": ["verification_rejected"]
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "FundingAssetType": {
        "description": "Public classification of an asset used by Funding resources.",
        "type": "string",
        "enum": ["fiat", "crypto", "stablecoin", "xstock"]
      },
      "CreateTransferEnvelope": {
        "description": "Response returned after creating a transfer.",
        "type": "object",
        "required": ["data"],
        "properties": {
          "data": {
            "description": "Created transfer.",
            "allOf": [
              {
                "$ref": "#/components/schemas/Transfer"
              }
            ]
          }
        }
      },
      "DepositLimit": {
        "description": "One account-specific limit for deposits through a method and rolling time window.",
        "type": "object",
        "required": ["type", "period", "period_seconds", "remaining", "maximum"],
        "properties": {
          "type": {
            "description": "Unit controlled by the limit.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DepositLimitType"
              }
            ]
          },
          "period": {
            "description": "Human-readable label for the rolling time window.",
            "allOf": [
              {
                "$ref": "#/components/schemas/DepositLimitPeriod"
              }
            ]
          },
          "period_seconds": {
            "description": "Exact rolling-window duration in seconds.",
            "type": "integer",
            "format": "int64",
            "minimum": 1,
            "maximum": 4294967295
          },
          "asset": {
            "description": "Asset in which an `amount` limit is denominated. Present for amount limits and omitted for count-based limits.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingAssetReference"
              }
            ]
          },
          "remaining": {
            "description": "Remaining amount or deposit count in this rolling window. A negative value means the limit is already exceeded.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^-?[0-9]+(\\.[0-9]+)?$"
          },
          "maximum": {
            "description": "Maximum amount or deposit count allowed in this rolling window.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[0-9]+(\\.[0-9]+)?$"
          }
        }
      },
      "DepositLimitPeriod": {
        "description": "Human-readable rolling-window label. `daily`, `weekly`, and `monthly` mean rolling 24-hour, 7-day, and 30-day windows; `custom` uses `period_seconds`.",
        "type": "string",
        "enum": ["daily", "weekly", "monthly", "custom"]
      },
      "DepositLimitType": {
        "description": "Type of deposit limit exposed by this API. Additional deposit controls may apply.",
        "type": "string",
        "enum": ["amount", "deposit_attempts", "successful_deposits"]
      },
      "DepositMethod": {
        "description": "A deposit method available to the selected account.",
        "type": "object",
        "required": ["id"],
        "properties": {
          "id": {
            "description": "Stable identifier used to claim and list deposit addresses.",
            "type": "string",
            "format": "uuid"
          },
          "network": {
            "description": "Customer-facing blockchain network or deposit-method name.",
            "type": "string",
            "minLength": 1
          },
          "method": {
            "description": "Customer-facing funding-method label. Present only when more than one deposit method is available on the same network.",
            "type": "string",
            "minLength": 1
          },
          "network_info": {
            "description": "Blockchain network metadata.",
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkInfo"
              }
            ]
          },
          "fee": {
            "description": "Fixed deposit fee, denominated in the asset returned by Funding. Omitted when no fixed fee applies.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingAmount"
              }
            ]
          },
          "fee_percentage": {
            "description": "Percentage points charged on the deposit. For example, `1.5` means 1.5 percent. Omitted when no percentage fee applies.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[0-9]+(\\.[0-9]+)?$"
          },
          "minimum": {
            "description": "Minimum amount accepted per deposit transaction. Omitted when the method has no minimum.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingAmount"
              }
            ]
          },
          "maximum": {
            "description": "Maximum amount for a new deposit based on the method's per-transaction cap and remaining amount-based rolling limits. Omitted when neither bound applies. A count-based entry in `period_limits` may still prevent another deposit.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingAmount"
              }
            ]
          },
          "address_setup_fee": {
            "description": "One-time fee applied to the first creditable deposit received at the address, denominated in the asset returned by Funding. It is not charged when the address is claimed. Omitted when no setup fee applies.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundingAmount"
              }
            ]
          },
          "period_limits": {
            "description": "Rolling limits exposed by this API for deposits through this method. This list is informational and may not include every policy that applies. Omitted when there are no supported limits to report.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DepositLimit"
            }
          }
        }
      },
      "DepositMethodsResult": {
        "description": "Deposit methods available for the requested asset.",
        "type": "object",
        "required": ["data"],
        "properties": {
          "data": {
            "description": "Available deposit methods. Empty when the account has no eligible methods for the asset.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DepositMethod"
            }
          },
          "next_page_token": {
            "description": "Opaque token for retrieving the next page. Absent when there are no more results.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          }
        }
      },
      "FundingAmount": {
        "description": "Decimal amount denominated in an asset.",
        "type": "object",
        "required": ["symbol", "type", "amount"],
        "properties": {
          "symbol": {
            "description": "Asset symbol the amount is denominated in.",
            "type": "string",
            "minLength": 1,
            "maxLength": 16
          },
          "name": {
            "description": "Human-readable English asset name.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "type": {
            "$ref": "#/components/schemas/FundingAssetType"
          },
          "amount": {
            "description": "Decimal amount represented as a string to preserve precision.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[0-9]+(\\.[0-9]+)?$"
          }
        }
      },
      "FundingAssetReference": {
        "description": "Reference to an asset by ticker symbol and classification.",
        "type": "object",
        "required": ["symbol", "type"],
        "properties": {
          "symbol": {
            "description": "Asset ticker symbol, such as BTC, USD, or TSLAx.",
            "type": "string",
            "minLength": 1,
            "maxLength": 16
          },
          "type": {
            "$ref": "#/components/schemas/FundingAssetType"
          }
        }
      },
      "ListDepositAddressesResult": {
        "description": "Crypto deposit addresses available for the requested funding method.",
        "type": "object",
        "required": ["data"],
        "properties": {
          "data": {
            "description": "Available deposit addresses. Empty when none can be used with the method.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListedDepositAddress"
            }
          },
          "next_page_token": {
            "description": "Opaque token for retrieving the next page. Absent when there are no more results.",
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          }
        }
      },
      "ListedDepositAddress": {
        "description": "Crypto deposit address and any network-specific routing information.",
        "type": "object",
        "required": ["address"],
        "properties": {
          "address": {
            "description": "Address or account identifier to which the deposit must be sent.",
            "type": "string",
            "minLength": 1
          },
          "tag": {
            "description": "Destination tag required by the network, when applicable.",
            "type": "string",
            "minLength": 1
          },
          "memo": {
            "description": "Destination memo required by the network, when applicable.",
            "type": "string",
            "minLength": 1
          },
          "expire_time": {
            "description": "Time after which the address should no longer be used. Omitted when the address does not expire.",
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "NetworkInfo": {
        "description": "Blockchain network metadata exposed to deposit clients.",
        "type": "object",
        "required": ["explorer", "confirmations", "est_confirmation_time"],
        "properties": {
          "explorer": {
            "description": "Blockchain explorer URL or transaction URL template supplied by Funding.",
            "type": "string",
            "minLength": 1
          },
          "confirmations": {
            "description": "Required confirmation count or network-specific confirmation description.",
            "type": "string",
            "minLength": 1
          },
          "est_confirmation_time": {
            "description": "Estimated time to reach the required confirmations.",
            "type": "string",
            "minLength": 1
          },
          "contract_address": {
            "description": "Token contract address on this network, when applicable.",
            "type": "string",
            "minLength": 1
          }
        }
      },
      "Transfer": {
        "description": "Created transfer.",
        "type": "object",
        "required": ["transfer_id", "status"],
        "properties": {
          "transfer_id": {
            "description": "Opaque transfer identifier. When the corresponding Portfolio transaction is\navailable, this value is returned as `reference.id` with `reference.kind=transfer`.\nIt is distinct from the Portfolio transaction's `TX`-namespace `id`.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "status": {
            "description": "Current status of the transfer creation operation.",
            "allOf": [
              {
                "$ref": "#/components/schemas/TransferStatus"
              }
            ]
          }
        }
      },
      "TransferStatus": {
        "description": "Coarsened status of the transfer creation operation. `pending` means the transfer\nis still being processed, `complete` means the create operation has completed, and\n`failed` means it could not be completed.",
        "type": "string",
        "enum": ["pending", "complete", "failed"]
      },
      "ClaimDepositAddressBody": {
        "description": "Crypto funding method whose deposit address should be claimed.",
        "type": "object",
        "required": ["method_id"],
        "properties": {
          "method_id": {
            "description": "Crypto funding method identifier returned by the deposit-methods endpoint.",
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "ClaimDepositAddressResult": {
        "description": "Claimed crypto deposit address for the selected account.",
        "type": "object",
        "required": ["data"],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DepositAddress"
          }
        }
      },
      "DepositAddress": {
        "description": "Crypto deposit address and any network-specific routing information.",
        "type": "object",
        "required": ["address"],
        "properties": {
          "address": {
            "description": "Address or account identifier to which the deposit must be sent.",
            "type": "string",
            "minLength": 1
          },
          "tag": {
            "description": "Destination tag required by the network, when applicable.",
            "type": "string",
            "minLength": 1
          },
          "memo": {
            "description": "Destination memo required by the network, when applicable.",
            "type": "string",
            "minLength": 1
          },
          "expires_at": {
            "description": "Time after which the address should no longer be used. Omitted when the address does not expire.",
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TransactionReferenceKind": {
        "description": "Namespace of the originating system that issued the reference. Use the kind returned with a transaction when filtering by reference.",
        "type": "string",
        "enum": ["funding", "transfer"]
      },
      "TransactionReference": {
        "description": "An identifier assigned by a system from which a transaction originated. For transfers, use `kind=transfer` and the opaque `transfer_id` returned by `POST /v1/transfers`.",
        "type": "object",
        "properties": {
          "kind": {
            "$ref": "#/components/schemas/TransactionReferenceKind"
          },
          "id": {
            "description": "Identifier assigned by the originating system. Treat this value as opaque.",
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          }
        },
        "required": ["kind", "id"]
      },
      "TransactionDetails": {
        "description": "Type-specific transaction detail, internally tagged by `type`. Each tag admits only the fields defined for it, so a detail belonging to one transaction type can never carry another type's fields.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/FundingTransactionDetails"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "funding": "#/components/schemas/FundingTransactionDetails"
          }
        }
      },
      "FundingTransactionDetails": {
        "description": "Detail for `deposit` and `withdrawal` transactions, which settle through funding.",
        "type": "object",
        "properties": {
          "type": {
            "description": "Discriminator identifying this as funding detail.",
            "type": "string",
            "enum": ["funding"]
          },
          "crypto_transaction_id": {
            "description": "On-chain transaction id or hash for this funding movement. Present once the transaction settles on a blockchain; omitted for fiat funding and while an on-chain transaction is still pending broadcast. Treat this value as opaque; its format varies by network.",
            "type": "string"
          }
        },
        "required": ["type"]
      },
      "FundsDepositAssetAmount": {
        "title": "FundsDepositAssetAmount",
        "type": "object",
        "required": ["asset", "value"],
        "properties": {
          "asset": {
            "description": "Partner-facing symbol of the asset used for this value.",
            "type": "string",
            "minLength": 1
          },
          "value": {
            "description": "Decimal amount in the asset's native units. A zero value is represented as `\"0\"`.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[0-9]+(\\.[0-9]+)?$"
          }
        },
        "description": "A decimal amount paired with its partner-facing asset symbol."
      },
      "FundsDepositLifecyclePayload": {
        "title": "FundsDepositLifecyclePayload",
        "type": "object",
        "required": ["account_id", "transaction_id", "user_id"],
        "properties": {
          "transaction_id": {
            "description": "Public deposit transaction id.",
            "type": "string"
          },
          "user_id": {
            "description": "Public id of the user whose deposit changed.",
            "type": "string"
          },
          "account_id": {
            "description": "Public account id associated with the deposit.",
            "type": "string"
          },
          "amount": {
            "description": "Total deposit amount, inclusive of the fee. Present when PWS can resolve both the source value and its asset.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundsDepositAssetAmount"
              }
            ]
          },
          "fee": {
            "description": "Fee charged for the deposit. Present only when the source provides both the fee value and its asset and PWS can resolve the asset. An explicitly provided zero fee is included; PWS does not infer a missing fee or its asset.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FundsDepositAssetAmount"
              }
            ]
          },
          "observed_at": {
            "description": "RFC3339 UTC time the transition was observed. Omitted when unavailable.",
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "Payload shared by deposit lifecycle events. Amount and fee availability follows the source data and is not tied to the lifecycle event type."
      },
      "CreateLightningInvoiceBody": {
        "description": "Asset and exact amount the Lightning invoice should request.",
        "type": "object",
        "required": ["asset_symbol", "amount"],
        "properties": {
          "asset_symbol": {
            "description": "Symbol of the asset to deposit over the Bitcoin Lightning Network. Use a symbol returned by the PWS Assets API, such as BTC.",
            "type": "string",
            "minLength": 1,
            "maxLength": 16
          },
          "amount": {
            "description": "Exact decimal amount the invoice requests, denominated in `asset_symbol` and represented as a string to preserve precision.",
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[0-9]+(\\.[0-9]+)?$"
          }
        }
      },
      "CreateLightningInvoiceResult": {
        "description": "Lightning invoice created for the selected account.",
        "type": "object",
        "required": ["data"],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LightningInvoice"
          }
        }
      },
      "LightningInvoice": {
        "description": "Single-use BOLT11 payment request for a Bitcoin Lightning Network deposit.",
        "type": "object",
        "required": ["invoice"],
        "properties": {
          "invoice": {
            "description": "BOLT11 payment request to pay over the Lightning Network. It encodes the exact amount and can be paid only once.",
            "type": "string",
            "minLength": 1
          },
          "expires_at": {
            "description": "Time after which the invoice can no longer be paid. Omitted when the invoice does not expire.",
            "type": "string",
            "format": "date-time"
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "name": "API-Key",
        "in": "header",
        "description": "Your public API key. Identifies the partner making the request."
      },
      "ApiNonce": {
        "type": "apiKey",
        "name": "API-Nonce",
        "in": "header",
        "description": "Monotonically increasing nonce included in the request signature."
      },
      "ApiSign": {
        "type": "apiKey",
        "name": "API-Sign",
        "in": "header",
        "description": "HMAC signature over the request, computed with your private key."
      }
    },
    "headers": {
      "RequestId": {
        "description": "Unique identifier for tracing this request across services. Include in support tickets.",
        "schema": {
          "type": "string",
          "format": "uuid",
          "example": "5f4d2a8e-91a4-4d6c-8a17-9b1e2c3f4a5b"
        }
      },
      "RateLimitLimit": {
        "description": "Total requests allowed in the current window.",
        "schema": {
          "type": "integer",
          "example": 1000
        }
      },
      "RateLimitRemaining": {
        "description": "Requests remaining in the current window.",
        "schema": {
          "type": "integer",
          "example": 955
        }
      },
      "RateLimitReset": {
        "description": "Unix timestamp (seconds) when the rate-limit window resets.",
        "schema": {
          "type": "integer",
          "format": "int64",
          "example": 1713182400
        }
      },
      "RetryAfter": {
        "description": "Seconds the client should wait before retrying.",
        "schema": {
          "type": "integer",
          "example": 30
        }
      },
      "IdempotentReplayed": {
        "description": "Present and set to `true` when this response is a replay of a prior response served from the idempotency cache.",
        "schema": {
          "type": "boolean",
          "example": true
        }
      },
      "StrictTransportSecurity": {
        "description": "Enforces HTTPS for the configured period. Always `max-age=63072000; includeSubDomains; preload`.",
        "schema": {
          "type": "string",
          "example": "max-age=63072000; includeSubDomains; preload"
        }
      },
      "XContentTypeOptions": {
        "description": "Disables MIME sniffing. Always `nosniff`.",
        "schema": {
          "type": "string",
          "enum": ["nosniff"],
          "example": "nosniff"
        }
      },
      "ContentSecurityPolicy": {
        "description": "Prevents embedding and resource loading. Always `default-src 'none'; frame-ancestors 'none'`.",
        "schema": {
          "type": "string",
          "example": "default-src 'none'; frame-ancestors 'none'"
        }
      },
      "CacheControl": {
        "description": "Prevents caching of sensitive financial data. Always `no-store`.",
        "schema": {
          "type": "string",
          "enum": ["no-store"],
          "example": "no-store"
        }
      }
    },
    "parameters": {
      "UserIdPath": {
        "in": "path",
        "name": "user_id",
        "required": true,
        "description": "ID of the user the request applies to. For partners operating in the B2B2C model, this is the Sub-User the request is acting on behalf of.",
        "schema": {
          "$ref": "#/components/schemas/UserId"
        },
        "example": "AA45N8G4MLDYWAR7"
      },
      "AccountIdPath": {
        "in": "path",
        "name": "account_id",
        "required": true,
        "description": "ID of the account the request applies to. This refers to one of the accounts held by the user the request is acting on behalf of (typically the user's main account, but any of the user's accounts is accepted). Routes the request to that specific account container.",
        "schema": {
          "$ref": "#/components/schemas/AccountId"
        },
        "example": "W4BE9868GY65TB6523"
      },
      "VerificationIdPath": {
        "in": "path",
        "name": "verification_id",
        "required": true,
        "description": "Public PV-prefixed verification ID.",
        "schema": {
          "$ref": "#/components/schemas/VerificationId"
        },
        "example": "PVABCDE-FGHIJ-KLMNOP"
      },
      "TravelRuleVerificationIdPath": {
        "name": "verification_id",
        "in": "path",
        "description": "Stable PWS identifier for the Travel Rule verification case.",
        "required": true,
        "example": "ver_0195e4d2-a4d0-7b12-8f4a-123456789abc",
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64
        }
      },
      "PageSize": {
        "name": "page_size",
        "in": "query",
        "description": "Maximum number of results to return. Defaults to 20 when omitted.",
        "required": false,
        "schema": {
          "type": "integer",
          "format": "int32",
          "minimum": 1,
          "maximum": 25,
          "default": 20
        },
        "style": "form",
        "example": 20
      },
      "PageToken": {
        "name": "page_token",
        "in": "query",
        "description": "Opaque token returned as `next_page_token` in the previous response. Omit to request the first page.",
        "required": false,
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "style": "form",
        "example": "MjoyRHuBXSgoe0mDHt-iFALROW46EGdvk_trgja31Vwr7H4"
      }
    }
  },
  "tags": [
    {
      "name": "Users",
      "description": "Users and headless-user onboarding flows that the partner manages.\n\n- **Create User** provisions a user with full identity verification fields collected up front.\n- **Create Headless User** provisions a lightweight user when your licensing agreement allows you to manage KYC data outside Payward.\n- **Get User** retrieves the user's profile, verification status, and required actions.\n- **Update User** updates user profile fields and may re-trigger verification.\n\nUse the returned user `id` for calls that require the user's identifier."
    },
    {
      "name": "Assets",
      "description": "Catalog of assets available on the platform with retail-display metadata (logos, market data, descriptions)."
    },
    {
      "name": "Conversion rules",
      "description": "Rule-driven fiat ↔ crypto value movement, including conversion rules and deposits."
    },
    {
      "name": "Earn",
      "description": "Manage auto-earn preferences and retrieve allocation and reward information."
    },
    {
      "name": "Funds",
      "description": "Deposits, withdrawals, addresses, methods, and the consolidated funding-transactions ledger."
    },
    {
      "name": "Portfolio",
      "description": "End-user portfolio summary, history, and transaction views."
    },
    {
      "name": "Price Trigger Swaps",
      "description": "Limit-style orders that execute when a configured price trigger is met."
    },
    {
      "name": "On-chain Swaps",
      "description": "Wallet-funded onchain quote trading for xStock and USDC pairs. On-chain quotes settle on-chain through the Payward on-chain proxy contract."
    },
    {
      "name": "Ramp",
      "description": "Hosted fiat-to-crypto on-ramp checkout: country / fiat / payment-method / cryptocurrency-asset discovery, transaction limits and prospective quotes, and the hosted checkout URL."
    },
    {
      "name": "Reports",
      "description": "Settlement and reconciliation reports for the partner."
    },
    {
      "name": "Swaps",
      "description": "Direct partner-to-Payward swap quotes and executions (institutional FX-style trading)."
    },
    {
      "name": "Travel Rule Verifications",
      "description": "Travel Rule address ownership verification flows."
    },
    {
      "name": "Verifications",
      "description": "Identity verification (KYC) submission and status for end users."
    },
    {
      "name": "Webhooks",
      "description": "Manage webhook subscriptions for asynchronous event delivery."
    }
  ],
  "servers": [
    {
      "url": "https://api.services.payward.com",
      "description": "Production"
    }
  ],
  "security": [
    {
      "ApiKey": [],
      "ApiNonce": [],
      "ApiSign": []
    }
  ]
}
