{
  "openapi": "3.1.0",
  "info": {
    "title": "Ospree Travel Rule API",
    "summary": "Travel Rule Compliant Crypto Transfer API",
    "description": "API for managing travel rule compliant cryptocurrency transfers.",
    "contact": {
      "name": "Ospree",
      "url": "https://www.ospree.io/",
      "email": "support@ospree.io"
    },
    "version": "2.0.0"
  },
  "paths": {
    "/api/v2/travelrule/transfers": {
      "post": {
        "tags": [
          "Transfers"
        ],
        "summary": "Create Transfer",
        "description": "Initiate a Travel Rule transfer between crypto service providers or to a self-hosted wallet. Combines account creation, wallet address verification, and transfer initiation into a single call. Supports VASP-to-VASP withdrawals, self-hosted wallet withdrawals, and self-hosted wallet deposits.\n\n`reference_id` is the idempotency key, scoped to your account. A request repeating a `reference_id` you have already used creates nothing: it returns that original transfer unchanged and ignores the rest of the body, answering `200 OK` with the header `Idempotent-Replayed: true`. A fresh create answers `201 Created` and carries no such header. A request without a `reference_id` never replays.\n\nA `flow` transfer whose beneficiary VASP is not active on Ospree is refused with `422 Unprocessable Entity`.",
        "operationId": "create_transfer_api_v2_travelrule_transfers_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTransferRequest"
              },
              "examples": {
                "vasp_to_vasp_individual": {
                  "summary": "VASP-to-VASP Transfer (Individual → Individual)",
                  "description": "Customer initiates a crypto transfer to a non-customer beneficiary whose account is hosted at another VASP. Both accounts are individuals.",
                  "value": {
                    "amount": 4.2,
                    "dti": "4H95J0R2X",
                    "protocol": "flow",
                    "reference_id": "reference-transfer-01",
                    "beneficiary_vasp_id": "MLESJF",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "originator_address_is_self_hosted": false,
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "beneficiary_address_is_self_hosted": false,
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "routing_number": "1234XYZ",
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893",
                    "originator_account": {
                      "account_type": "individual",
                      "account_category": "customer",
                      "customer_id": "random-cust-id-101",
                      "individual": {
                        "individual_name": {
                          "name_type": "LEGL",
                          "name_first": "Mark",
                          "name_last": "Rover"
                        }
                      }
                    },
                    "beneficiary_account": {
                      "account_type": "individual",
                      "account_category": "non-customer",
                      "customer_id": "random-cust-id-102",
                      "individual": {
                        "individual_name": {
                          "name_type": "LEGL",
                          "name_first": "Robert",
                          "name_last": "Harding"
                        }
                      }
                    }
                  }
                },
                "vasp_to_vasp_entity": {
                  "summary": "VASP-to-VASP Transfer (Entity → Entity)",
                  "description": "Customer initiates a crypto transfer to a non-customer beneficiary whose account is hosted at another VASP. Both accounts are entities.",
                  "value": {
                    "amount": 4.2,
                    "dti": "4H95J0R2X",
                    "protocol": "flow",
                    "reference_id": "reference-transfer-01",
                    "beneficiary_vasp_id": "MLESJF",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "originator_address_is_self_hosted": false,
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "beneficiary_address_is_self_hosted": false,
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "routing_number": "1234XYZ",
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893",
                    "originator_account": {
                      "account_type": "entity",
                      "account_category": "customer",
                      "customer_id": "random-cust-id-101",
                      "entity": {
                        "entity_name": {
                          "name_type": "LEGL",
                          "name_legal": "Digital Capital",
                          "name_business": "Digital Capital Pte. Ltd."
                        }
                      }
                    },
                    "beneficiary_account": {
                      "account_type": "entity",
                      "account_category": "non-customer",
                      "customer_id": "random-cust-id-102",
                      "entity": {
                        "entity_name": {
                          "name_type": "LEGL",
                          "name_legal": "Crypto Funds",
                          "name_business": "Crypto Funds Inc."
                        }
                      }
                    }
                  }
                },
                "vasp_to_vasp_mixed": {
                  "summary": "VASP-to-VASP Transfer (Individual → Entity)",
                  "description": "Customer initiates a crypto transfer to another customer whose account is hosted at a different VASP. Originator is individual, beneficiary is entity.",
                  "value": {
                    "amount": 4.2,
                    "dti": "4H95J0R2X",
                    "protocol": "flow",
                    "reference_id": "reference-transfer-01",
                    "beneficiary_vasp_id": "MLESJF",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "originator_address_is_self_hosted": false,
                    "originator_account_reference_id": "random-cust-id-101",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "beneficiary_address_is_self_hosted": false,
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "routing_number": "1234XYZ",
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893",
                    "originator_account": {
                      "account_type": "individual",
                      "account_category": "customer",
                      "customer_id": "random-cust-id-101",
                      "individual": {
                        "individual_name": {
                          "name_type": "LEGL",
                          "name_first": "Mark",
                          "name_last": "Rover"
                        }
                      }
                    },
                    "beneficiary_account": {
                      "account_type": "entity",
                      "account_category": "non-customer",
                      "customer_id": "random-cust-id-102",
                      "entity": {
                        "entity_name": {
                          "name_type": "LEGL",
                          "name_legal": "Crypto Funds",
                          "name_business": "Crypto Funds Inc."
                        }
                      }
                    }
                  }
                },
                "vasp_to_vasp_deposit_record": {
                  "summary": "VASP-to-VASP Deposit Record",
                  "description": "Transfer created for record-keeping purposes where the originator VASP didn't initiate the transfer. A record dispatches nothing, so it carries no protocol: send none, and `is_record` is what marks the shape. Sending `originator_vasp_id` with `protocol: \"flow\"` and no `is_record` is the deprecated spelling of the same booking.",
                  "value": {
                    "amount": 4.2,
                    "dti": "4H95J0R2X",
                    "is_record": true,
                    "reference_id": "reference-transfer-01",
                    "originator_vasp_id": "ABCXYZ",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "originator_address_is_self_hosted": false,
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "beneficiary_address_is_self_hosted": false,
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "routing_number": "1234XYZ",
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893",
                    "originator_account": {
                      "account_type": "individual",
                      "account_category": "customer",
                      "customer_id": "random-cust-id-101",
                      "individual": {
                        "individual_name": {
                          "name_type": "LEGL",
                          "name_first": "Mark",
                          "name_last": "Rover"
                        }
                      }
                    },
                    "beneficiary_account": {
                      "account_type": "individual",
                      "account_category": "non-customer",
                      "customer_id": "random-cust-id-102",
                      "individual": {
                        "individual_name": {
                          "name_type": "LEGL",
                          "name_first": "Robert",
                          "name_last": "Harding"
                        }
                      }
                    }
                  }
                },
                "self_hosted_withdrawal_dti": {
                  "summary": "Self-Hosted Wallet Withdrawal (DTI)",
                  "description": "Customer withdraws crypto funds to their own self-hosted wallet using DTI identifier. A self-hosted leg makes this a record, which carries no protocol — send none.",
                  "value": {
                    "amount": 4.2,
                    "dti": "4H95J0R2X",
                    "reference_id": "reference-transfer-01",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "originator_address_is_self_hosted": false,
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "beneficiary_address_is_self_hosted": true,
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "routing_number": "1234XYZ",
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893"
                  }
                },
                "self_hosted_deposit_dti": {
                  "summary": "Self-Hosted Wallet Deposit (DTI)",
                  "description": "Customer deposits crypto funds from their self-hosted wallet using DTI identifier. A self-hosted leg makes this a record, which carries no protocol — send none.",
                  "value": {
                    "amount": 4.2,
                    "dti": "4H95J0R2X",
                    "reference_id": "reference-transfer-01",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "originator_address_is_self_hosted": true,
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "beneficiary_address_is_self_hosted": false,
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "routing_number": "1234XYZ",
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Idempotent replay. This `reference_id` already identifies one of your transfers, so nothing was created: the original transfer is returned unchanged and the rest of the request body was ignored.",
            "headers": {
              "Idempotent-Replayed": {
                "description": "Always `true` on an idempotent replay. Absent when the transfer was created.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "idempotent_replay": {
                    "summary": "Idempotent Replay",
                    "description": "The transfer this `reference_id` already identifies, returned unchanged",
                    "value": {
                      "status": "success",
                      "data": {
                        "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                        "reference_id": "reference-transfer-01",
                        "amount": 4.2,
                        "dti": "4H95J0R2X",
                        "chain": "bitcoin",
                        "symbol": "BTC",
                        "protocol": "flow",
                        "originator_vasp_id": "UVWDEP",
                        "beneficiary_vasp_id": "MLESJF",
                        "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                        "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                        "originator_address_is_self_hosted": false,
                        "beneficiary_address_is_self_hosted": false,
                        "routing_number": "1234XYZ",
                        "originator_account_reference_id": "random-ref-id-101",
                        "beneficiary_account_reference_id": "random-ref-id-102",
                        "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893",
                        "transfer_status": "INITIATED",
                        "transfer_type": "INSTRUCTION"
                      }
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_CreateTransferResponse_"
                }
              }
            }
          },
          "201": {
            "description": "Transfer Created Successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_CreateTransferResponse_"
                },
                "examples": {
                  "successful_transfer_creation": {
                    "summary": "Successful Transfer Creation",
                    "description": "Transfer created successfully and ready for review",
                    "value": {
                      "status": "success",
                      "data": {
                        "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                        "reference_id": "reference-transfer-01",
                        "amount": 4.2,
                        "dti": "4H95J0R2X",
                        "chain": "bitcoin",
                        "symbol": "BTC",
                        "protocol": "flow",
                        "originator_vasp_id": "UVWDEP",
                        "beneficiary_vasp_id": "MLESJF",
                        "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                        "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                        "originator_address_is_self_hosted": false,
                        "beneficiary_address_is_self_hosted": false,
                        "routing_number": "1234XYZ",
                        "originator_account_reference_id": "random-ref-id-101",
                        "beneficiary_account_reference_id": "random-ref-id-102",
                        "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893",
                        "transfer_status": "INITIATED",
                        "transfer_type": "INSTRUCTION"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Unauthorized"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment Required - VASP Customer Status",
            "content": {
              "application/json": {
                "examples": {
                  "flow_protocol_both_not_customers": {
                    "summary": "Flow protocol - both VASPs not customers",
                    "description": "For Flow protocol, at least one VASP must be a customer",
                    "value": {
                      "status": "fail",
                      "message": "At least one of the VASPs must be a customer"
                    }
                  },
                  "originator_not_customer": {
                    "summary": "Originator VASP not a customer",
                    "description": "For non-Flow protocols, originator VASP must be a customer",
                    "value": {
                      "status": "fail",
                      "message": "Originator VASP must be a customer for the selected travel rule protocol"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "examples": {
                  "originator_vasp_not_found": {
                    "summary": "Originator VASP not found",
                    "description": "Originator VASP ID does not exist in the system",
                    "value": {
                      "status": "fail",
                      "message": "originator_vasp_id does not exist"
                    }
                  },
                  "beneficiary_vasp_not_found": {
                    "summary": "Beneficiary VASP not found",
                    "description": "Beneficiary VASP ID does not exist in the system",
                    "value": {
                      "status": "fail",
                      "message": "beneficiary_vasp_id does not exist"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation and Business Logic Errors",
            "content": {
              "application/json": {
                "examples": {
                  "field_validation": {
                    "summary": "Field validation errors",
                    "description": "Errors from Pydantic field validation",
                    "value": {
                      "status": "fail",
                      "message": "Validation error",
                      "data": [
                        {
                          "type": "value_error",
                          "loc": [
                            "body",
                            "amount"
                          ],
                          "msg": "amount must be a valid number"
                        }
                      ]
                    }
                  },
                  "both_self_hosted": {
                    "summary": "Both addresses self-hosted",
                    "description": "Both originator and beneficiary cannot be self-hosted",
                    "value": {
                      "status": "fail",
                      "message": "Both originator and beneficiary addresses cannot be self-hosted"
                    }
                  },
                  "beneficiary_vasp_id_must_be_null": {
                    "summary": "beneficiary_vasp_id must be null",
                    "description": "For self-recorded VASP-VASP deposits, beneficiary_vasp_id must be null",
                    "value": {
                      "status": "fail",
                      "message": "beneficiary_vasp_id must be null for self-recorded VASP-VASP deposits"
                    }
                  },
                  "beneficiary_vasp_id_required": {
                    "summary": "beneficiary_vasp_id required",
                    "description": "For non-self-hosted transfers, beneficiary_vasp_id is required",
                    "value": {
                      "status": "fail",
                      "message": "beneficiary_vasp_id is required for non-self-hosted transfers"
                    }
                  },
                  "token_not_supported": {
                    "summary": "Token not supported",
                    "description": "Invalid DTI or chain/symbol combination",
                    "value": {
                      "status": "fail",
                      "message": "Token not supported. Please provide either DTI or chain and symbol."
                    }
                  },
                  "invalid_dti": {
                    "summary": "Invalid DTI",
                    "description": "Provided DTI is not valid or recognized",
                    "value": {
                      "status": "fail",
                      "message": "Invalid DTI"
                    }
                  },
                  "chain_not_supported": {
                    "summary": "Chain not supported",
                    "description": "Blockchain chain is not currently supported",
                    "value": {
                      "status": "fail",
                      "message": "Chain not currently supported"
                    }
                  },
                  "token_symbol_not_supported": {
                    "summary": "Token symbol not supported",
                    "description": "The chain/symbol pair names no asset. Either the symbol is unknown on that chain, or several assets share it there and the pair is ambiguous — identify the asset with dti in both cases.",
                    "value": {
                      "status": "fail",
                      "message": "Token 'STRK' is not currently supported on chain 'ethereum'. Identify the asset with dti instead."
                    }
                  },
                  "same_vasp": {
                    "summary": "Same VASP error",
                    "description": "Originator and beneficiary VASPs cannot be the same",
                    "value": {
                      "status": "fail",
                      "message": "Originator and beneficiary VASPs cannot be the same"
                    }
                  },
                  "protocol_not_supported_originator": {
                    "summary": "Protocol not supported by originator",
                    "description": "Originator VASP does not support the selected travel rule protocol",
                    "value": {
                      "status": "fail",
                      "message": "originator VASP does not support the selected travel rule protocol"
                    }
                  },
                  "protocol_not_supported_beneficiary": {
                    "summary": "Protocol not supported by beneficiary",
                    "description": "Beneficiary VASP does not support the selected travel rule protocol",
                    "value": {
                      "status": "fail",
                      "message": "beneficiary VASP does not support the selected travel rule protocol"
                    }
                  },
                  "account_not_exist": {
                    "summary": "Account does not exist",
                    "description": "Referenced account does not exist and account details not provided",
                    "value": {
                      "status": "fail",
                      "message": "originator_account does not exist and account details are required"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Transfers"
        ],
        "summary": "List Transfers",
        "description": "Retrieve a paginated overview of all transfers initiated between entities, with support for filtering by VASP identifiers, blockchain addresses, transfer status, and date ranges.",
        "operationId": "list_transfers_api_v2_travelrule_transfers_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Size"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "dti",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Dti"
            }
          },
          {
            "name": "beneficiary_vasp_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Beneficiary Vasp Id"
            }
          },
          {
            "name": "originator_address",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Originator Address"
            }
          },
          {
            "name": "beneficiary_address",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Beneficiary Address"
            }
          },
          {
            "name": "originator_account_reference_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Originator Account Reference Id"
            }
          },
          {
            "name": "beneficiary_account_reference_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Beneficiary Account Reference Id"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Direction"
            }
          },
          {
            "name": "transfer_status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Transfer Status"
            }
          },
          {
            "name": "beneficiary_account_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Beneficiary Account Type"
            }
          },
          {
            "name": "transaction_hash",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Transaction Hash"
            }
          },
          {
            "name": "protocol",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Protocol"
            }
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start Date"
            }
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time"
                },
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End Date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A page of transfers.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_Page_ListTransfersResponse__"
                },
                "examples": {
                  "one_page": {
                    "summary": "A page of transfers",
                    "value": {
                      "status": "success",
                      "data": {
                        "items": [
                          {
                            "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                            "reference_id": "reference-transfer-01",
                            "amount": 4.2,
                            "amount_str": "4.2",
                            "dti": "4H95J0R2X",
                            "chain": "bitcoin",
                            "symbol": "BTC",
                            "protocol": "flow",
                            "originator_vasp_id": "UVWDEP",
                            "beneficiary_vasp_id": "MLESJF",
                            "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                            "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                            "originator_address_is_self_hosted": false,
                            "beneficiary_address_is_self_hosted": false,
                            "routing_number": "1234XYZ",
                            "originator_account_reference_id": "random-ref-id-101",
                            "beneficiary_account_reference_id": "random-ref-id-102",
                            "transfer_status": "INITIATED",
                            "transfer_type": "INSTRUCTION",
                            "direction": "outgoing"
                          }
                        ],
                        "total": 1,
                        "page": 1,
                        "size": 50,
                        "pages": 1
                      }
                    }
                  },
                  "empty_page": {
                    "summary": "No transfers match",
                    "value": {
                      "status": "success",
                      "data": {
                        "items": [],
                        "total": 0,
                        "page": 1,
                        "size": 50,
                        "pages": 0
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Unauthorized"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/travelrule/transfers/{transfer_id}": {
      "get": {
        "tags": [
          "Transfers"
        ],
        "summary": "Get Transfer Details",
        "description": "Retrieve comprehensive details about a specific Travel Rule transfer, including originator and beneficiary information, amount, timestamps, and transfer status.",
        "operationId": "get_transfer_details_api_v2_travelrule_transfers__transfer_id__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "transfer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "System-generated identifier unique to each transfer.",
              "title": "Transfer Id"
            },
            "description": "System-generated identifier unique to each transfer."
          }
        ],
        "responses": {
          "200": {
            "description": "The full transfer, with both sides' records and VASPs. A counterparty's own *declared* record, when the wire carried one, sits beside ours rather than merged into it -- the disagreement between the two is the compliance artifact.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_GetTransferDetailsResponse_"
                },
                "example": {
                  "status": "success",
                  "data": {
                    "transfer_data": {
                      "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                      "reference_id": "reference-transfer-01",
                      "amount": 4.2,
                      "dti": "4H95J0R2X",
                      "chain": "bitcoin",
                      "symbol": "BTC",
                      "protocol": "flow",
                      "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                      "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                      "originator_address_is_self_hosted": false,
                      "beneficiary_address_is_self_hosted": false,
                      "routing_number": "1234XYZ",
                      "transfer_status": "REVIEW",
                      "transfer_type": "INSTRUCTION",
                      "created": "2026-08-31T09:14:22.418293",
                      "created_by_desc": "api"
                    },
                    "originator_record": {
                      "display_name": "John Doe",
                      "reference_id": "random-ref-id-101",
                      "account_type": "individual",
                      "name_first": "John",
                      "name_last": "Doe",
                      "date_of_birth": "1990-01-01",
                      "place_of_birth": "Singapore, Singapore",
                      "nationality_code": "SG",
                      "residence_country_code": "US"
                    },
                    "beneficiary_record": {
                      "display_name": "Grace Receiver",
                      "reference_id": "random-ref-id-102",
                      "account_type": "individual",
                      "name_first": "Grace",
                      "name_last": "Receiver"
                    },
                    "originator_vasp": {
                      "vasp_id": "UVWDEP",
                      "name_legal": "Northwind Digital Assets",
                      "registration_country_code": "SG"
                    },
                    "beneficiary_vasp": {
                      "vasp_id": "MLESJF",
                      "name_legal": "Meridian Exchange Ltd",
                      "registration_country_code": "SG"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Unauthorized"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "examples": {
                  "transfer_not_found": {
                    "summary": "Transfer not found",
                    "description": "Transfer with specified ID does not exist or access denied",
                    "value": {
                      "status": "fail",
                      "message": "Transfer not found"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Transfers"
        ],
        "summary": "Update Transfer",
        "description": "Update the details of an existing transfer.",
        "operationId": "update_transfer_api_v2_travelrule_transfers__transfer_id__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "transfer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "System-generated identifier unique to each transfer.",
              "title": "Transfer Id"
            },
            "description": "System-generated identifier unique to each transfer."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTransferRequest"
              },
              "examples": {
                "record_settlement": {
                  "summary": "Record the on-chain transaction hash",
                  "value": {
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The transfer was updated with its on-chain transaction hash.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_UpdateTransferResponse_"
                },
                "example": {
                  "status": "success",
                  "data": {
                    "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                    "reference_id": "reference-transfer-01",
                    "amount": 4.2,
                    "amount_str": "4.2",
                    "dti": "4H95J0R2X",
                    "chain": "bitcoin",
                    "symbol": "BTC",
                    "protocol": "flow",
                    "originator_vasp_id": "UVWDEP",
                    "beneficiary_vasp_id": "MLESJF",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "originator_address_is_self_hosted": false,
                    "beneficiary_address_is_self_hosted": false,
                    "routing_number": "1234XYZ",
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893",
                    "transfer_status": "INITIATED",
                    "transfer_type": "INSTRUCTION"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Unauthorized"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "examples": {
                  "transfer_not_found": {
                    "summary": "Transfer not found",
                    "description": "Transfer with specified ID does not exist or access denied",
                    "value": {
                      "status": "fail",
                      "message": "Transfer not found"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation Error",
            "content": {
              "application/json": {
                "examples": {
                  "transaction_hash_required": {
                    "summary": "Transaction hash required",
                    "description": "Transaction hash is required for transfer update",
                    "value": {
                      "status": "fail",
                      "message": "Validation error",
                      "data": [
                        {
                          "type": "missing",
                          "loc": [
                            "body",
                            "transaction_hash"
                          ],
                          "msg": "Field required"
                        }
                      ]
                    }
                  },
                  "invalid_transaction_hash": {
                    "summary": "Invalid transaction hash format",
                    "description": "Transaction hash format is invalid",
                    "value": {
                      "status": "fail",
                      "message": "Validation error",
                      "data": [
                        {
                          "type": "value_error",
                          "loc": [
                            "body",
                            "transaction_hash"
                          ],
                          "msg": "transaction_hash must be a string"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/travelrule/transfers/{transfer_id}/{action}": {
      "patch": {
        "tags": [
          "Transfers"
        ],
        "summary": "Action Transfer",
        "description": "Perform an action on a transfer based on its current status, such as accepting, rejecting, canceling, or completing it.",
        "operationId": "action_transfer_api_v2_travelrule_transfers__transfer_id___action__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "transfer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "System-generated identifier unique to each transfer.",
              "title": "Transfer Id"
            },
            "description": "System-generated identifier unique to each transfer."
          },
          {
            "name": "action",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ActionTransferStatus",
              "description": "Action to apply to the transfer, such as accept, reject, cancel, or complete."
            },
            "description": "Action to apply to the transfer, such as accept, reject, cancel, or complete."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ActionTransferRequest"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Action Input"
              },
              "examples": {
                "complete": {
                  "summary": "complete -- requires the transaction hash",
                  "value": {
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893"
                  }
                },
                "reject": {
                  "summary": "reject -- with a reason",
                  "value": {
                    "reject_error": "BENEFICIARY_NOT_FOUND",
                    "message": "No account matches the beneficiary reference"
                  }
                },
                "accept": {
                  "summary": "accept -- optionally asserting the beneficiary Payment Address",
                  "description": "Only needed for an inbound transfer whose Inquiry named no beneficiary wallet, where the approval cannot be dispatched without one (issue #1078). The wallet must already be registered against one of your own customer accounts. Omit the body entirely when the transfer already carries an address.",
                  "value": {
                    "beneficiary_address": "0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97"
                  }
                },
                "cancel": {
                  "summary": "cancel -- no body fields required",
                  "description": "The body may be omitted entirely for `cancel`, and for an `accept` that needs no address.",
                  "value": {}
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The lifecycle action was applied; the body reports the landed status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_ActionTransferResponse_"
                },
                "examples": {
                  "accepted": {
                    "summary": "accept -- an incoming transfer was accepted",
                    "value": {
                      "status": "success",
                      "data": {
                        "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                        "reference_id": "reference-transfer-01",
                        "amount": 4.2,
                        "amount_str": "4.2",
                        "dti": "4H95J0R2X",
                        "chain": "bitcoin",
                        "symbol": "BTC",
                        "protocol": "flow",
                        "originator_vasp_id": "UVWDEP",
                        "beneficiary_vasp_id": "MLESJF",
                        "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                        "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                        "originator_address_is_self_hosted": false,
                        "beneficiary_address_is_self_hosted": false,
                        "routing_number": "1234XYZ",
                        "originator_account_reference_id": "random-ref-id-101",
                        "beneficiary_account_reference_id": "random-ref-id-102",
                        "transfer_status": "ACCEPTED",
                        "transfer_type": "INSTRUCTION"
                      }
                    }
                  },
                  "completed": {
                    "summary": "complete -- settlement recorded",
                    "value": {
                      "status": "success",
                      "data": {
                        "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                        "reference_id": "reference-transfer-01",
                        "amount": 4.2,
                        "amount_str": "4.2",
                        "dti": "4H95J0R2X",
                        "chain": "bitcoin",
                        "symbol": "BTC",
                        "protocol": "flow",
                        "originator_vasp_id": "UVWDEP",
                        "beneficiary_vasp_id": "MLESJF",
                        "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                        "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                        "originator_address_is_self_hosted": false,
                        "beneficiary_address_is_self_hosted": false,
                        "routing_number": "1234XYZ",
                        "originator_account_reference_id": "random-ref-id-101",
                        "beneficiary_account_reference_id": "random-ref-id-102",
                        "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893",
                        "transfer_status": "COMPLETED",
                        "transfer_type": "INSTRUCTION"
                      }
                    }
                  },
                  "canceled": {
                    "summary": "cancel -- withdrawn before settlement",
                    "value": {
                      "status": "success",
                      "data": {
                        "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                        "reference_id": "reference-transfer-01",
                        "amount": 4.2,
                        "amount_str": "4.2",
                        "dti": "4H95J0R2X",
                        "chain": "bitcoin",
                        "symbol": "BTC",
                        "protocol": "flow",
                        "originator_vasp_id": "UVWDEP",
                        "beneficiary_vasp_id": "MLESJF",
                        "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                        "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                        "originator_address_is_self_hosted": false,
                        "beneficiary_address_is_self_hosted": false,
                        "routing_number": "1234XYZ",
                        "originator_account_reference_id": "random-ref-id-101",
                        "beneficiary_account_reference_id": "random-ref-id-102",
                        "transfer_status": "CANCELED",
                        "transfer_type": "INSTRUCTION"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Unauthorized"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "examples": {
                  "transfer_not_found": {
                    "summary": "Transfer not found",
                    "description": "Transfer with specified ID does not exist or access denied",
                    "value": {
                      "status": "fail",
                      "message": "Transfer not found"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation and Business Logic Errors",
            "content": {
              "application/json": {
                "examples": {
                  "field_validation": {
                    "summary": "Field validation errors",
                    "description": "Errors from Pydantic field validation",
                    "value": {
                      "status": "fail",
                      "message": "Validation error",
                      "data": [
                        {
                          "type": "value_error",
                          "loc": [
                            "body",
                            "field_name"
                          ],
                          "msg": "Field validation failed"
                        }
                      ]
                    }
                  },
                  "action_not_allowed_outgoing": {
                    "summary": "Action not allowed for outgoing transfer",
                    "description": "Outgoing transfers can only be canceled or completed",
                    "value": {
                      "status": "fail",
                      "message": "Instruction Flow Outgoing transfers can only be canceled, completed"
                    }
                  },
                  "action_not_allowed_incoming": {
                    "summary": "Action not allowed for incoming transfer",
                    "description": "Incoming transfers can only be accepted or rejected",
                    "value": {
                      "status": "fail",
                      "message": "Instruction Flow Incoming transfers can only be accepted, rejected"
                    }
                  },
                  "action_not_allowed_record": {
                    "summary": "Action not allowed for record transfer",
                    "description": "Record transfers support all actions based on status",
                    "value": {
                      "status": "fail",
                      "message": "Record transfers can only be canceled, completed, accepted, rejected"
                    }
                  },
                  "outgoing_complete_not_accepted": {
                    "summary": "Outgoing transfer must be accepted to complete",
                    "description": "Outgoing transfers can only be completed if they are accepted",
                    "value": {
                      "status": "fail",
                      "message": "Outgoing transfer can only be completed if it is accepted"
                    }
                  },
                  "outgoing_cancel_not_review": {
                    "summary": "Outgoing transfer must be in review or timed out to cancel",
                    "description": "Outgoing transfers can only be cancelled if they are for review or timed out",
                    "value": {
                      "status": "fail",
                      "message": "Outgoing transfer can only be cancelled if it is for review or timed out"
                    }
                  },
                  "incoming_accept_not_review": {
                    "summary": "Incoming transfer must be in review to accept",
                    "description": "Incoming transfers can only be accepted if status is for review",
                    "value": {
                      "status": "fail",
                      "message": "Incoming transfer can only be accepted if status is for review"
                    }
                  },
                  "incoming_reject_not_review": {
                    "summary": "Incoming transfer must be in review to reject",
                    "description": "Incoming transfers can only be rejected if status is for review",
                    "value": {
                      "status": "fail",
                      "message": "Incoming transfer can only be rejected if status is for review"
                    }
                  },
                  "transfer_complete_not_accepted": {
                    "summary": "Transfer must be accepted to complete",
                    "description": "Transfers can only be completed if they are accepted",
                    "value": {
                      "status": "fail",
                      "message": "Transfer can only be completed if it is accepted"
                    }
                  },
                  "transfer_cancel_not_review": {
                    "summary": "Transfer must be in review to cancel",
                    "description": "Transfers can only be cancelled if they are for review",
                    "value": {
                      "status": "fail",
                      "message": "Transfer can only be cancelled if it is for review"
                    }
                  },
                  "transfer_accept_not_review": {
                    "summary": "Transfer must be in review to accept",
                    "description": "Transfers can only be accepted if status is for review",
                    "value": {
                      "status": "fail",
                      "message": "Transfer can only be accepted if status is for review"
                    }
                  },
                  "transfer_reject_not_review": {
                    "summary": "Transfer must be in review to reject",
                    "description": "Transfers can only be rejected if status is for review",
                    "value": {
                      "status": "fail",
                      "message": "Transfer can only be rejected if status is for review"
                    }
                  },
                  "transaction_hash_required_for_complete": {
                    "summary": "Transaction hash required for completion",
                    "description": "Transaction hash is required when completing a transfer",
                    "value": {
                      "status": "fail",
                      "message": "transaction_hash is required for completing transfer"
                    }
                  },
                  "transaction_hash_empty": {
                    "summary": "Transaction hash cannot be empty",
                    "description": "Transaction hash cannot be empty when provided",
                    "value": {
                      "status": "fail",
                      "message": "Transaction hash cannot be empty"
                    }
                  },
                  "reject_fields_required": {
                    "summary": "Reject fields required",
                    "description": "Reject error and message are required when rejecting a transfer",
                    "value": {
                      "status": "fail",
                      "message": "reject_error and message are required for rejecting transfers"
                    }
                  },
                  "reject_missing_fields": {
                    "summary": "Missing required fields for rejection",
                    "description": "Some required fields are missing for rejection",
                    "value": {
                      "status": "fail",
                      "message": "The following fields are required for rejecting transfers: reject_error, message"
                    }
                  },
                  "invalid_reject_error_code": {
                    "summary": "Invalid reject error code",
                    "description": "Provided reject error code is not valid",
                    "value": {
                      "status": "fail",
                      "message": "Invalid reject_error: INVALID_CODE. Must be a valid return status."
                    }
                  },
                  "reject_message_empty": {
                    "summary": "Reject message cannot be empty",
                    "description": "Message cannot be empty when provided for rejection",
                    "value": {
                      "status": "fail",
                      "message": "Message cannot be empty when provided"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/travelrule/tokens/": {
      "get": {
        "tags": [
          "Tokens"
        ],
        "summary": "List Tokens",
        "description": "Return the list of tokens supported by the Ospree Travel Rule module, including the Digital Token Identifier (DTI), symbol, and associated blockchain network, to help select the correct token for a transfer.\n\n`dti` is the stable identifier for a token. Every token listed here is accepted by `POST /transfers` when the transfer identifies its asset by `dti`, and every token that path accepts is listed here. The same `chain` and `symbol` can name several distinct assets (two USD Coins on `arbitrum-one`, for instance): `name` and `contract` tell them apart, and the `chain`+`symbol` form of `POST /transfers` cannot resolve such a pair — send those by `dti`.\n\nThe `chain`, `symbol` and `dti` filters all match exactly. Filtering by `dti` returns the single asset that identifier names, which is the only way to address one asset of a pair that shares a `chain` and `symbol`.",
        "operationId": "list_tokens_api_v2_travelrule_tokens__get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "chain",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by chain (exact match)",
              "title": "Chain"
            },
            "description": "Filter by chain (exact match)"
          },
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by symbol (exact match)",
              "title": "Symbol"
            },
            "description": "Filter by symbol (exact match)"
          },
          {
            "name": "dti",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by Digital Token Identifier (exact match, case-insensitive)",
              "title": "Dti"
            },
            "description": "Filter by Digital Token Identifier (exact match, case-insensitive)"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Size"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A page of sendable assets, as the DTI registry records them.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_Page_ListTokensResponse__"
                },
                "examples": {
                  "native_and_token": {
                    "summary": "A native asset and a contract token",
                    "description": "`dti_type` 1 is a chain's native asset. `contract` is what tells two assets apart when they share a chain and symbol -- send those by `dti`, because the chain+symbol form of POST /transfers cannot resolve them.",
                    "value": {
                      "status": "success",
                      "data": {
                        "items": [
                          {
                            "chain": "bitcoin",
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "dti": "4H95J0R2X",
                            "decimals": 8,
                            "dti_type": 1
                          },
                          {
                            "chain": "arbitrum-one",
                            "symbol": "USDC",
                            "name": "USD Coin",
                            "dti": "X9J2T7K4M",
                            "contract": "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
                            "decimals": 6,
                            "dti_type": 2
                          }
                        ],
                        "total": 2,
                        "page": 1,
                        "size": 50,
                        "pages": 1
                      }
                    }
                  },
                  "filtered_by_dti": {
                    "summary": "Filtered by dti -- the single asset it names",
                    "value": {
                      "status": "success",
                      "data": {
                        "items": [
                          {
                            "chain": "bitcoin",
                            "symbol": "BTC",
                            "name": "Bitcoin",
                            "dti": "4H95J0R2X",
                            "decimals": 8,
                            "dti_type": 1
                          }
                        ],
                        "total": 1,
                        "page": 1,
                        "size": 50,
                        "pages": 1
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Validation error",
                  "data": [
                    {
                      "loc": [
                        "query",
                        "dti"
                      ],
                      "msg": "Field required",
                      "type": "missing"
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/travelrule/partners/vasps": {
      "get": {
        "tags": [
          "Partner Directory"
        ],
        "summary": "List Vasps",
        "description": "List VASPs reachable via the Ospree network, including per-VASP `encryption_public_key`.",
        "operationId": "list_vasps_api_v2_travelrule_partners_vasps_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Size"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Serviceable VASPs, each with the transport key to encrypt `ivms101` to.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_Page_PartnerVaspEntry__"
                },
                "example": {
                  "status": "success",
                  "data": {
                    "items": [
                      {
                        "vasp_id": "MLESJF",
                        "name_legal": "Meridian Exchange Ltd",
                        "name_business": "Meridian",
                        "registration_country_code": "SG",
                        "address_type_code": "GEOG",
                        "address_street_no": "1",
                        "address_street_name": "Raffles Place",
                        "address_city": "Singapore",
                        "address_region": "Central",
                        "address_postcode": "048616",
                        "address_country_code": "SG",
                        "address_country_desc": "Singapore",
                        "website": "https://meridian.example",
                        "national_id": "5493001KJTIIGC8Y1R12",
                        "lei": "5493001KJTIIGC8Y1R12",
                        "is_verified_vasp": true,
                        "encryption_public_key": "MCowBQYDK2VuAyEAGb9ECWmEzf6FQbrBZ9w7lshQhqowtrbLDFw4rXAxZuE"
                      }
                    ],
                    "total": 1,
                    "page": 1,
                    "size": 50,
                    "pages": 1
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Validation error",
                  "data": [
                    {
                      "loc": [
                        "query",
                        "page"
                      ],
                      "msg": "Field required",
                      "type": "missing"
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/travelrule/partners/vasps/search": {
      "get": {
        "tags": [
          "Partner Directory"
        ],
        "summary": "Search Vasps",
        "description": "Search the VASP directory by id, LEI, wallet, or free text. At least one of q / vasp_id / lei / wallet_address is required.",
        "operationId": "search_vasps_api_v2_travelrule_partners_vasps_search_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "vasp_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Vasp Id"
            }
          },
          {
            "name": "lei",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Lei"
            }
          },
          {
            "name": "wallet_address",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Wallet Address"
            }
          },
          {
            "name": "chain",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Chain"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Size"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Matching VASPs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_Page_PartnerVaspEntry__"
                },
                "examples": {
                  "match": {
                    "summary": "One match",
                    "value": {
                      "status": "success",
                      "data": {
                        "items": [
                          {
                            "vasp_id": "MLESJF",
                            "name_legal": "Meridian Exchange Ltd",
                            "name_business": "Meridian",
                            "registration_country_code": "SG",
                            "address_type_code": "GEOG",
                            "address_street_no": "1",
                            "address_street_name": "Raffles Place",
                            "address_city": "Singapore",
                            "address_region": "Central",
                            "address_postcode": "048616",
                            "address_country_code": "SG",
                            "address_country_desc": "Singapore",
                            "website": "https://meridian.example",
                            "national_id": "5493001KJTIIGC8Y1R12",
                            "lei": "5493001KJTIIGC8Y1R12",
                            "is_verified_vasp": true,
                            "encryption_public_key": "MCowBQYDK2VuAyEAGb9ECWmEzf6FQbrBZ9w7lshQhqowtrbLDFw4rXAxZuE"
                          }
                        ],
                        "total": 1,
                        "page": 1,
                        "size": 50,
                        "pages": 1
                      }
                    }
                  },
                  "no_match": {
                    "summary": "No matches -- an empty page, not a 404",
                    "value": {
                      "status": "success",
                      "data": {
                        "items": [],
                        "total": 0,
                        "page": 1,
                        "size": 50,
                        "pages": 0
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "No search criterion supplied",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "At least one of q / vasp_id / lei / wallet_address is required"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/travelrule/partners/member-vasps": {
      "get": {
        "tags": [
          "Partner Directory"
        ],
        "summary": "List Member Vasps",
        "description": "List the VASPs on your network resolved to an Ospree `vasp_id`, each with your own network reference. Use it to discover the `originator_vasp_id` to send on POST /transfers.",
        "operationId": "list_member_vasps_api_v2_travelrule_partners_member_vasps_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Q"
            }
          },
          {
            "name": "lei",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Lei"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Size"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The VASPs mapped to your network, each with your own reference.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_Page_PartnerMemberVaspEntry__"
                },
                "example": {
                  "status": "success",
                  "data": {
                    "items": [
                      {
                        "vasp_id": "UVWDEP",
                        "network_reference": "partner-member-00417",
                        "name_legal": "Northwind Digital Assets",
                        "lei": "894500XKMEUZ3RCPQ115",
                        "is_verified_vasp": true
                      }
                    ],
                    "total": 1,
                    "page": 1,
                    "size": 50,
                    "pages": 1
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Validation error",
                  "data": [
                    {
                      "loc": [
                        "query",
                        "lei"
                      ],
                      "msg": "Field required",
                      "type": "missing"
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Partner Directory"
        ],
        "summary": "Register Member VASP (retired)",
        "description": "Retired: this endpoint answers `410 Gone` to every request. Use GET /partners/member-vasps to list the member VASPs on your network.",
        "operationId": "register_member_vasp_api_v2_travelrule_partners_member_vasps_post",
        "deprecated": true,
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartnerRegisterMemberVaspRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "No longer returned: this endpoint is retired and answers 410.",
            "content": {
              "application/json": {
                "example": {
                  "status": "success",
                  "data": {
                    "vasp_id": "UVWDEP",
                    "network_reference": "partner-member-00417",
                    "name_legal": "Northwind Digital Assets",
                    "lei": "894500XKMEUZ3RCPQ115",
                    "is_verified_vasp": true
                  }
                }
              }
            }
          },
          "201": {
            "description": "No longer returned: this endpoint is retired and answers 410.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_PartnerMemberVaspEntry_"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "410": {
            "description": "This endpoint is retired.",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Member VASP registration is retired. GET /partners/member-vasps lists the member VASPs on your network."
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Validation error",
                  "data": [
                    {
                      "loc": [
                        "body",
                        "network_reference"
                      ],
                      "msg": "Field required",
                      "type": "missing"
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        },
        "x-sunset": "2026-10-22"
      }
    },
    "/api/v2/travelrule/partners/assets": {
      "get": {
        "tags": [
          "Partner Directory"
        ],
        "summary": "List Sendable Assets",
        "description": "Returns the list of DTI registry records, which define the asset used in a transfer: the `dti` of a record is the value to send as `dti` on `POST /transfers` (for example, `4H95J0R2X` is Bitcoin). The list is not paginated or filtered. Two assets can share a `symbol` on one `chain`, so use `name` and `contract` to tell them apart.",
        "operationId": "list_assets_api_v2_travelrule_partners_assets_get",
        "responses": {
          "200": {
            "description": "The DTI registry record of every asset a transfer can be created for.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_list_PartnerAsset__"
                },
                "example": {
                  "status": "success",
                  "data": [
                    {
                      "chain": "bitcoin",
                      "symbol": "BTC",
                      "name": "Bitcoin",
                      "dti": "4H95J0R2X",
                      "decimals": 8,
                      "dti_type": 1
                    },
                    {
                      "chain": "arbitrum-one",
                      "symbol": "USDC",
                      "name": "USD Coin (Arb1)",
                      "dti": "2VDL03X13",
                      "contract": "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8",
                      "decimals": 6,
                      "dti_type": 0
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                },
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    },
    "/api/v2/travelrule/partners/transfers": {
      "post": {
        "tags": [
          "Partner Directory"
        ],
        "summary": "Create Transfer",
        "description": "Create a Travel Rule transfer. IVMS101 identity is supplied as the encrypted `ivms101` payload, decrypted to the beneficiary VASP's transport key — an undecryptable envelope is a 422 and nothing is persisted. `originator_vasp_id` must be a member of your network, named by either its Ospree `vasp_id` or your own `network_reference` for it; an exact `vasp_id` match wins, and the response reports the Ospree `vasp_id`.\n\n`reference_id` is the idempotency key, scoped to your network. A request repeating a `reference_id` you have already used creates nothing: it returns that original transfer unchanged and ignores the rest of the body, answering `200 OK` with the header `Idempotent-Replayed: true`. A fresh create answers `201 Created` and carries no such header, and a request without a `reference_id` never replays. Retry a timed-out create under its original `reference_id` and it can only ever book one transfer.",
        "operationId": "create_transfer_api_v2_travelrule_partners_transfers_post",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartnerCreateTransferRequest"
              },
              "examples": {
                "by_dti": {
                  "summary": "Create a transfer",
                  "description": "`ivms101` is the encrypted JWE envelope, encrypted to the beneficiary VASP's `encryption_public_key` from GET /partners/vasps. An envelope that does not open under that key is a 422 and nothing is persisted; a key we cannot load on our side is a 500. Here `originator_vasp_id` is the member's Ospree `vasp_id`.",
                  "value": {
                    "amount": "4.2",
                    "dti": "4H95J0R2X",
                    "originator_vasp_id": "UVWDEP",
                    "beneficiary_vasp_id": "MLESJF",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "reference_id": "reference-transfer-01",
                    "routing_number": "1234XYZ",
                    "ivms101": "eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSJ9.encrypted-envelope"
                  }
                },
                "originator_by_network_reference": {
                  "summary": "Name the originator by your own network reference",
                  "description": "`originator_vasp_id` also accepts the `network_reference` GET /partners/member-vasps lists for the member -- the same VASP as the example above, named the way your own network names it, so no id translation is needed before calling. A value that is an exact Ospree `vasp_id` is read as that VASP; any other value is matched against your network's references. The 201 and every later response report the Ospree `vasp_id` (`UVWDEP` here), never the network reference. `beneficiary_vasp_id` is unaffected and stays an Ospree `vasp_id`.",
                  "value": {
                    "amount": "4.2",
                    "dti": "4H95J0R2X",
                    "originator_vasp_id": "partner-member-00417",
                    "beneficiary_vasp_id": "MLESJF",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "reference_id": "reference-transfer-02",
                    "routing_number": "1234XYZ",
                    "ivms101": "eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSJ9.encrypted-envelope"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Idempotent replay. This `reference_id` already identifies one of your transfers, so nothing was created: the original transfer is returned unchanged and the rest of the request body was ignored, including the `ivms101` envelope, which is not decrypted.",
            "headers": {
              "Idempotent-Replayed": {
                "description": "Always `true` on an idempotent replay. Absent when the transfer was created.",
                "schema": {
                  "type": "string",
                  "enum": [
                    "true"
                  ]
                }
              }
            },
            "content": {
              "application/json": {
                "example": {
                  "status": "success",
                  "data": {
                    "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                    "reference_id": "reference-transfer-01",
                    "amount": 4.2,
                    "dti": "4H95J0R2X",
                    "chain": "bitcoin",
                    "symbol": "BTC",
                    "originator_vasp_id": "UVWDEP",
                    "beneficiary_vasp_id": "MLESJF",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "routing_number": "1234XYZ",
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "transfer_status": "REVIEW",
                    "transfer_type": "INSTRUCTION"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_PartnerCreateTransferResponse_"
                }
              }
            }
          },
          "201": {
            "description": "The transfer was created and landed at `REVIEW`. `originator_vasp_id` is reported as the Ospree `vasp_id`, whichever form the request named the member VASP by.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_PartnerCreateTransferResponse_"
                },
                "example": {
                  "status": "success",
                  "data": {
                    "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                    "reference_id": "reference-transfer-01",
                    "amount": 4.2,
                    "dti": "4H95J0R2X",
                    "chain": "bitcoin",
                    "symbol": "BTC",
                    "originator_vasp_id": "UVWDEP",
                    "beneficiary_vasp_id": "MLESJF",
                    "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                    "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                    "routing_number": "1234XYZ",
                    "originator_account_reference_id": "random-ref-id-101",
                    "beneficiary_account_reference_id": "random-ref-id-102",
                    "transfer_status": "REVIEW",
                    "transfer_type": "INSTRUCTION"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation Error",
            "content": {
              "application/json": {
                "examples": {
                  "undecryptable_envelope": {
                    "summary": "The ivms101 envelope could not be decrypted",
                    "description": "Nothing is persisted. Re-fetch the beneficiary VASP's `encryption_public_key` and re-encrypt to it. A failure to load the beneficiary's key on our side is a 500, not this.",
                    "value": {
                      "status": "fail",
                      "message": "Could not decrypt the IVMS101 envelope for beneficiary VASP ACME01: the JWE protected header enc must be A256GCM"
                    }
                  },
                  "originator_not_a_member": {
                    "summary": "originator_vasp_id is not on your network",
                    "description": "The value matched neither an Ospree `vasp_id` nor a `network_reference` among your member VASPs. Check it against GET /partners/member-vasps.",
                    "value": {
                      "status": "fail",
                      "message": "originator_vasp_id is not a member of your network"
                    }
                  },
                  "ivms101_validation": {
                    "summary": "The decrypted IVMS101 payload was refused",
                    "description": "Nothing is persisted. Each entry locates one refused element by its path in the IVMS101 payload you encrypted, spelled as you sent it, and states the constraint it broke; the submitted value is never echoed back. Every violation is reported at once.",
                    "value": {
                      "status": "fail",
                      "message": "Validation error",
                      "data": [
                        {
                          "loc": [
                            "body",
                            "ivms101",
                            "originator",
                            "originatorPersons",
                            0,
                            "naturalPerson",
                            "geographicAddress",
                            0
                          ],
                          "msg": "Value error, Address requires addressLine or streetName with building detail (IVMS101 constraint C8)",
                          "type": "value_error"
                        }
                      ]
                    }
                  },
                  "field_validation": {
                    "summary": "Field validation failed",
                    "value": {
                      "status": "fail",
                      "message": "Validation error",
                      "data": [
                        {
                          "loc": [
                            "body",
                            "amount"
                          ],
                          "msg": "Value error, amount must be greater than zero",
                          "type": "value_error"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Partner Directory"
        ],
        "summary": "List Transfers",
        "description": "List the transfers you created, scoped to your partner network.",
        "operationId": "list_transfers_api_v2_travelrule_partners_transfers_get",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "dti",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Dti"
            }
          },
          {
            "name": "beneficiary_vasp_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Beneficiary Vasp Id"
            }
          },
          {
            "name": "originator_address",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Originator Address"
            }
          },
          {
            "name": "beneficiary_address",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Beneficiary Address"
            }
          },
          {
            "name": "originator_account_reference_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Originator Account Reference Id"
            }
          },
          {
            "name": "beneficiary_account_reference_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Beneficiary Account Reference Id"
            }
          },
          {
            "name": "transfer_status",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Transfer Status"
            }
          },
          {
            "name": "beneficiary_account_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Beneficiary Account Type"
            }
          },
          {
            "name": "transaction_hash",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Transaction Hash"
            }
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Start Date"
            }
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "title": "End Date"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Sort"
            }
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1,
              "title": "Page"
            }
          },
          {
            "name": "size",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "default": 50,
              "title": "Size"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The transfers you created, scoped to your partner network.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_Page_PartnerListTransfersResponse__"
                },
                "example": {
                  "status": "success",
                  "data": {
                    "items": [
                      {
                        "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                        "reference_id": "reference-transfer-01",
                        "amount": 4.2,
                        "dti": "4H95J0R2X",
                        "chain": "bitcoin",
                        "symbol": "BTC",
                        "originator_vasp_id": "UVWDEP",
                        "beneficiary_vasp_id": "MLESJF",
                        "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                        "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                        "routing_number": "1234XYZ",
                        "originator_account_reference_id": "random-ref-id-101",
                        "beneficiary_account_reference_id": "random-ref-id-102",
                        "transfer_status": "REVIEW",
                        "transfer_type": "INSTRUCTION"
                      }
                    ],
                    "total": 1,
                    "page": 1,
                    "size": 50,
                    "pages": 1
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Validation error",
                  "data": [
                    {
                      "loc": [
                        "query",
                        "transfer_status"
                      ],
                      "msg": "Field required",
                      "type": "missing"
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/travelrule/partners/transfers/{transfer_id}/{action}": {
      "patch": {
        "tags": [
          "Partner Directory"
        ],
        "summary": "Action Transfer",
        "description": "Settle or withdraw a transfer you created, keyed by Ospree's `transfer_id`. `complete` (with `transaction_hash`, requires `ACCEPTED`) records on-chain settlement; `cancel` (requires `REVIEW` or `ACCEPTED`) withdraws it before settlement. A transfer you did not create is a `404`. `accept`/`reject` return a `422` until that relay direction is enabled for your network.",
        "operationId": "action_transfer_api_v2_travelrule_partners_transfers__transfer_id___action__patch",
        "security": [
          {
            "HTTPBearer": []
          }
        ],
        "parameters": [
          {
            "name": "transfer_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Ospree `transfer_id` returned by the create 201.",
              "title": "Transfer Id"
            },
            "description": "Ospree `transfer_id` returned by the create 201."
          },
          {
            "name": "action",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/ActionTransferStatus",
              "description": "Lifecycle action to apply: `complete` or `cancel`."
            },
            "description": "Lifecycle action to apply: `complete` or `cancel`."
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/ActionTransferRequest"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Action Input"
              },
              "examples": {
                "complete": {
                  "summary": "complete -- requires the transaction hash",
                  "value": {
                    "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893"
                  }
                },
                "cancel": {
                  "summary": "cancel -- no body fields required",
                  "value": {}
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The action was applied. The body reports the landed terminal status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_PartnerActionTransferResponse_"
                },
                "examples": {
                  "completed": {
                    "summary": "complete -- on-chain settlement recorded",
                    "description": "Requires `ACCEPTED` and a `transaction_hash` in the body.",
                    "value": {
                      "status": "success",
                      "data": {
                        "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                        "reference_id": "reference-transfer-01",
                        "amount": 4.2,
                        "dti": "4H95J0R2X",
                        "chain": "bitcoin",
                        "symbol": "BTC",
                        "originator_vasp_id": "UVWDEP",
                        "beneficiary_vasp_id": "MLESJF",
                        "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                        "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                        "routing_number": "1234XYZ",
                        "originator_account_reference_id": "random-ref-id-101",
                        "beneficiary_account_reference_id": "random-ref-id-102",
                        "transaction_hash": "80003fee6bcbb2726b4d6466d690fce6caaa03771aada747eb0651637514b893",
                        "transfer_status": "COMPLETED",
                        "transfer_type": "INSTRUCTION"
                      }
                    }
                  },
                  "canceled": {
                    "summary": "cancel -- withdrawn before settlement",
                    "description": "Requires `REVIEW` or `ACCEPTED`.",
                    "value": {
                      "status": "success",
                      "data": {
                        "transfer_id": "067fd57d-efe3-7eab-8000-04d8f072e418",
                        "reference_id": "reference-transfer-01",
                        "amount": 4.2,
                        "dti": "4H95J0R2X",
                        "chain": "bitcoin",
                        "symbol": "BTC",
                        "originator_vasp_id": "UVWDEP",
                        "beneficiary_vasp_id": "MLESJF",
                        "originator_address": "3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy",
                        "beneficiary_address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
                        "routing_number": "1234XYZ",
                        "originator_account_reference_id": "random-ref-id-101",
                        "beneficiary_account_reference_id": "random-ref-id-102",
                        "transfer_status": "CANCELED",
                        "transfer_type": "INSTRUCTION"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "example": {
                  "status": "fail",
                  "message": "Transfer not found"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation Error",
            "content": {
              "application/json": {
                "examples": {
                  "relay_direction_disabled": {
                    "summary": "accept / reject is not enabled for your network",
                    "value": {
                      "status": "fail",
                      "message": "Action not supported for this partner network"
                    }
                  },
                  "wrong_status_for_action": {
                    "summary": "The transfer is not in a status this action allows",
                    "value": {
                      "status": "fail",
                      "message": "Transfer must be ACCEPTED to be completed"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                },
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/travelrule/partners/webhooks": {
      "get": {
        "tags": [
          "Partner Webhooks"
        ],
        "summary": "Read Webhook",
        "description": "Your registered endpoint and whether deliveries to it are signed. Never returns secret material — not the active secret, and not a pending replacement. A `404` means nothing is registered.",
        "operationId": "read_webhook_api_v2_travelrule_partners_webhooks_get",
        "responses": {
          "200": {
            "description": "Your registered endpoint. Never carries secret material, in any state.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_PartnerWebhookView_"
                },
                "example": {
                  "status": "success",
                  "data": {
                    "webhook_url": "https://partner.example.com/ospree/webhooks",
                    "secret_set": true
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                },
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                },
                "example": {
                  "status": "fail",
                  "message": "No webhook registered"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "put": {
        "tags": [
          "Partner Webhooks"
        ],
        "summary": "Register Webhook",
        "description": "Register or repoint your webhook endpoint. The body carries only `webhook_url`; which events you receive is determined by your network, not by a subscription. The first call also mints your signing secret and returns the plaintext **once** — no read route returns it again. Repointing an endpoint that already has a secret keeps it and discloses nothing.",
        "operationId": "register_webhook_api_v2_travelrule_partners_webhooks_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PartnerWebhookRegistrationRequest"
              },
              "examples": {
                "register": {
                  "summary": "Register or repoint your endpoint",
                  "description": "`webhook_url` is the only accepted field. Sending `event_names` is a 422, not a silent drop -- which events you receive is set by your network, not a subscription.",
                  "value": {
                    "webhook_url": "https://partner.example.com/ospree/webhooks"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The endpoint was registered or repointed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_PartnerWebhookRegistration_"
                },
                "examples": {
                  "first_registration": {
                    "summary": "First registration -- the secret is disclosed once",
                    "description": "No read route returns this value again. Store it now.",
                    "value": {
                      "status": "success",
                      "data": {
                        "webhook_url": "https://partner.example.com/ospree/webhooks",
                        "webhook_secret": "the plaintext signing secret, returned by this call only"
                      }
                    }
                  },
                  "repointed": {
                    "summary": "Repointed -- the secret key is absent, not null",
                    "description": "Repointing keeps the existing secret and discloses nothing, so the field is omitted entirely rather than sent as null.",
                    "value": {
                      "status": "success",
                      "data": {
                        "webhook_url": "https://partner.example.com/ospree/webhooks-v2"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                },
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Entity - Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                },
                "example": {
                  "status": "fail",
                  "message": "Validation error",
                  "data": [
                    {
                      "loc": [
                        "body",
                        "webhook_url"
                      ],
                      "msg": "Field required",
                      "type": "missing"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Partner Webhooks"
        ],
        "summary": "Delete Webhook",
        "description": "Stop delivery. Your signing secret is destroyed with the registration, so a later `PUT` mints a fresh one. Until then, reconcile by polling `GET /transfers`.",
        "operationId": "delete_webhook_api_v2_travelrule_partners_webhooks_delete",
        "responses": {
          "200": {
            "description": "Delivery stopped. The signing secret is destroyed with the registration, so a later PUT mints a fresh one.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccessResponse_bool_"
                },
                "example": {
                  "status": "success",
                  "data": true
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                },
                "example": {
                  "status": "fail",
                  "message": "Authentication required.",
                  "error_code": "auth.unauthenticated"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiFailResponse"
                },
                "example": {
                  "status": "fail",
                  "message": "No webhook registered"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "status": "error",
                  "code": 500,
                  "message": "Something went wrong.",
                  "error_code": "internal_error"
                }
              }
            }
          }
        },
        "security": [
          {
            "HTTPBearer": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AccountCategory": {
        "type": "string",
        "enum": [
          "customer",
          "non-customer"
        ],
        "title": "AccountCategory"
      },
      "AccountRole": {
        "type": "string",
        "enum": [
          "originator",
          "beneficiary"
        ],
        "title": "AccountRole",
        "description": "The role this account plays in a transfer.\n\nUsed to scope validation: per IVMS101 (constraint C1), only the originator's\nnatural person is required to provide at least one of address / customer ID /\nnational ID / date+place of birth. The beneficiary may have only a name."
      },
      "AccountType": {
        "type": "string",
        "enum": [
          "individual",
          "entity"
        ],
        "title": "AccountType"
      },
      "ActionTransferRequest": {
        "properties": {
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "reject_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reject Error"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address",
            "description": "Optional, `accept` only: the beneficiary Payment Address to answer the counterparty's Inquiry with, for an inbound transfer whose Inquiry named no beneficiary wallet. The wallet must already be registered against one of your own customer accounts. Supplying it on a transfer that already has one is accepted when the two agree and refused when they do not."
          }
        },
        "type": "object",
        "title": "ActionTransferRequest",
        "description": ""
      },
      "ActionTransferResponse": {
        "properties": {
          "transfer_id": {
            "type": "string",
            "format": "uuid",
            "title": "Transfer Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "amount": {
            "type": "number",
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dti"
          },
          "chain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chain"
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Symbol"
          },
          "protocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Protocol"
          },
          "originator_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Vasp Id"
          },
          "beneficiary_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Vasp Id"
          },
          "originator_address": {
            "type": "string",
            "title": "Originator Address"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address"
          },
          "originator_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address Is Self Hosted"
          },
          "beneficiary_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address Is Self Hosted"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "originator_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Account Reference Id"
          },
          "beneficiary_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Account Reference Id"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "transfer_status": {
            "type": "string",
            "title": "Transfer Status"
          },
          "transfer_type": {
            "$ref": "#/components/schemas/TypeTransfer"
          },
          "failure_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Reason",
            "description": "Why the last outbound message for this transfer did not reach the counterparty; null when none failed"
          },
          "amount_str": {
            "type": "string",
            "title": "Amount Str",
            "description": "Exact decimal-string form of the stored Display Amount.\n\nAdditive, output-only. The numeric ``amount`` is display-precision\nlimited (serialized as a JSON number for backwards compatibility);\n``amount_str`` is the precision-faithful field. The numeric/string\nsplit is transitional, to be consolidated in the next API version.\n\nAlways fixed-point notation, never scientific: the amount is written\nout in full at its stored scale, with no normalising, rounding or\ntrimming.",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "transfer_id",
          "amount",
          "originator_address",
          "transfer_status",
          "transfer_type",
          "amount_str"
        ],
        "title": "ActionTransferResponse",
        "description": "The action's answer, including whether the transfer's last message left.\n\n``failure_reason`` is what stops an ``accept``/``reject`` whose Inquiry\nResolution never reached the counterparty from reading as unqualified success:\nthe local transition stands — a transient callback failure must not undo a\nsettlement that is already real on-chain — but the body says the resolution is\nundelivered, and why (issue #1093).\n\nIt is the *transfer's* last recorded send failure, the same value both detail\nsurfaces carry, and it is deliberately not phrased as \"this action's\": nothing\nclears it, so an action that sends cleanly over a transfer whose earlier message\nfailed still reports that earlier failure. Claiming otherwise in the description\nwould be the quiet kind of wrong this field exists to remove."
      },
      "ActionTransferStatus": {
        "type": "string",
        "enum": [
          "complete",
          "reject",
          "cancel",
          "accept",
          "repair"
        ],
        "title": "ActionTransferStatus"
      },
      "AddressDetails": {
        "properties": {
          "address_type": {
            "$ref": "#/components/schemas/AddressType"
          },
          "address_line": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 512
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Line",
            "description": "Free-form address lines. A value you submit is limited to 256 characters at runtime; the field holds up to 512 so that an address a counterparty declares (up to seven 70-character IVMS101 addressLine entries) is kept whole."
          },
          "address_street_no": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 16
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Street No"
          },
          "address_street_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Street Name"
          },
          "address_building_name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Building Name"
          },
          "address_floor": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 70
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Floor"
          },
          "address_room": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 70
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Room"
          },
          "address_department": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Department"
          },
          "address_subdepartment": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 70
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Subdepartment"
          },
          "address_postbox": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Postbox"
          },
          "address_city_location": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Address City Location"
          },
          "address_city": {
            "type": "string",
            "maxLength": 50,
            "title": "Address City"
          },
          "address_region": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Region"
          },
          "address_district": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Address District"
          },
          "address_postcode": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 25
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Postcode"
          },
          "address_country_code": {
            "type": "string",
            "maxLength": 2,
            "title": "Address Country Code"
          }
        },
        "type": "object",
        "required": [
          "address_type",
          "address_city",
          "address_country_code"
        ],
        "title": "AddressDetails"
      },
      "AddressType": {
        "type": "string",
        "enum": [
          "HOME",
          "BIZZ",
          "GEOG"
        ],
        "title": "AddressType"
      },
      "ApiErrorResponse": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "error"
          },
          "code": {
            "type": "integer",
            "title": "Code",
            "description": "Duplicates the HTTP status; use `error_code`. Removed in v3."
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Code",
            "description": "Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."
          },
          "data": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ],
            "title": "Data"
          }
        },
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "title": "ApiErrorResponse",
        "description": "*summary*: Api error response model"
      },
      "ApiFailResponse": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "fail"
          },
          "message": {
            "type": "string",
            "title": "Message"
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Code",
            "description": "Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."
          },
          "data": {
            "anyOf": [
              {},
              {
                "type": "null"
              }
            ],
            "title": "Data"
          }
        },
        "type": "object",
        "required": [
          "message"
        ],
        "title": "ApiFailResponse",
        "description": "*summary*: Api fail response model"
      },
      "ApiSuccessResponse_ActionTransferResponse_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ActionTransferResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[ActionTransferResponse]"
      },
      "ApiSuccessResponse_CreateTransferResponse_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CreateTransferResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[CreateTransferResponse]"
      },
      "ApiSuccessResponse_GetTransferDetailsResponse_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/GetTransferDetailsResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[GetTransferDetailsResponse]"
      },
      "ApiSuccessResponse_Page_ListTokensResponse__": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Page_ListTokensResponse_"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[Page[ListTokensResponse]]"
      },
      "ApiSuccessResponse_Page_ListTransfersResponse__": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Page_ListTransfersResponse_"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[Page[ListTransfersResponse]]"
      },
      "ApiSuccessResponse_Page_PartnerListTransfersResponse__": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Page_PartnerListTransfersResponse_"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[Page[PartnerListTransfersResponse]]"
      },
      "ApiSuccessResponse_Page_PartnerMemberVaspEntry__": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Page_PartnerMemberVaspEntry_"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[Page[PartnerMemberVaspEntry]]"
      },
      "ApiSuccessResponse_Page_PartnerVaspEntry__": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Page_PartnerVaspEntry_"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[Page[PartnerVaspEntry]]"
      },
      "ApiSuccessResponse_PartnerActionTransferResponse_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PartnerActionTransferResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[PartnerActionTransferResponse]"
      },
      "ApiSuccessResponse_PartnerCreateTransferResponse_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PartnerCreateTransferResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[PartnerCreateTransferResponse]"
      },
      "ApiSuccessResponse_PartnerMemberVaspEntry_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PartnerMemberVaspEntry"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[PartnerMemberVaspEntry]"
      },
      "ApiSuccessResponse_PartnerWebhookRegistration_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PartnerWebhookRegistration"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[PartnerWebhookRegistration]"
      },
      "ApiSuccessResponse_PartnerWebhookView_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PartnerWebhookView"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[PartnerWebhookView]"
      },
      "ApiSuccessResponse_UpdateTransferResponse_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UpdateTransferResponse"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[UpdateTransferResponse]"
      },
      "ApiSuccessResponse_bool_": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[bool]"
      },
      "ApiSuccessResponse_list_PartnerAsset__": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "default": "success"
          },
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PartnerAsset"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          }
        },
        "type": "object",
        "title": "ApiSuccessResponse[list[PartnerAsset]]"
      },
      "CreateAccountInput": {
        "properties": {
          "reference_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50,
                "minLength": 4
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id",
            "description": "Unique identifier for the account."
          },
          "account_type": {
            "$ref": "#/components/schemas/AccountType",
            "description": "Type of account, either 'individual' or 'entity'."
          },
          "account_category": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountCategory"
              },
              {
                "type": "null"
              }
            ],
            "description": "Account category, defaults to 'customer'",
            "default": "customer"
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Customer Id",
            "description": "Customer ID associated with the account."
          },
          "email": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Email",
            "description": "Email address of the account holder."
          },
          "individual": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IndividualDetails"
              },
              {
                "type": "null"
              }
            ]
          },
          "entity": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EntityDetails"
              },
              {
                "type": "null"
              }
            ]
          },
          "address": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              },
              {
                "type": "null"
              }
            ]
          },
          "national_id": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NationalIdDetails"
              },
              {
                "type": "null"
              }
            ]
          },
          "created": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created"
          },
          "last_modified": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Modified"
          },
          "account_role": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountRole"
              },
              {
                "type": "null"
              }
            ],
            "description": "Optional role this account plays in a transfer. When set to 'beneficiary', the 'must have at least one identifying field' check is skipped to match IVMS101 rules (constraint C1 applies only to the originator's natural person)."
          }
        },
        "type": "object",
        "required": [
          "account_type"
        ],
        "title": "CreateAccountInput"
      },
      "CreateTransferRequest": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dti",
            "description": "Digital Token Identifier (ISO 24165) of the asset being transferred, and the documented way to name it — list the accepted identifiers with GET /travelrule/tokens. Optional only because one legacy alternative is still accepted: a request that names no asset at all is rejected."
          },
          "protocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Protocol",
            "description": "The rail to send this transfer over, from GET /travelrule/protocols. Required whenever the transfer resolves to an instruction. A record dispatches nothing and carries no protocol: any value sent on one is accepted and discarded, and the transfer reads back with a null protocol. A self-hosted leg has no counterparty VASP to instruct, so naming any rail other than the deprecated 'flow' on one — or naming none — is rejected unless is_record is true."
          },
          "originator_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Vasp Id"
          },
          "beneficiary_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Vasp Id"
          },
          "originator_address": {
            "type": "string",
            "title": "Originator Address"
          },
          "originator_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address Is Self Hosted",
            "description": "Declare that this transfer's originator wallet is self-hosted — nobody operates it on the sender's behalf. It describes this transfer, so the transfer reads back with exactly what you send: absent or false means this is not a self-hosted transfer, whatever any earlier transfer declared about the same wallet. A self-hosted leg can only ride a record — set is_record — and the reserved 'SLFHST' VASP ID is applied automatically, so do not send originator_vasp_id with it.",
            "default": false
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address"
          },
          "beneficiary_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address Is Self Hosted",
            "description": "Declare that this transfer's beneficiary wallet is self-hosted — nobody operates it on the recipient's behalf. It describes this transfer, so the transfer reads back with exactly what you send: absent or false means this is not a self-hosted transfer, whatever any earlier transfer declared about the same wallet. A self-hosted leg can only ride a record — set is_record — and the reserved 'SLFHST' VASP ID is applied automatically, so do not send beneficiary_vasp_id with it.",
            "default": false
          },
          "travel_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Travel Address"
          },
          "originator_account_reference_id": {
            "type": "string",
            "title": "Originator Account Reference Id"
          },
          "beneficiary_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Account Reference Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "originator_account": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CreateAccountInput"
              },
              {
                "type": "null"
              }
            ]
          },
          "beneficiary_account": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CreateAccountInput"
              },
              {
                "type": "null"
              }
            ]
          },
          "transfer_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TypeTransfer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Deprecated and inert: the server derives the transfer type from the transfer's shape. Any value sent is accepted and discarded — it never reaches the persisted transfer."
          },
          "is_record": {
            "type": "boolean",
            "title": "Is Record",
            "description": "Book this transfer as a unilateral record rather than an instruction to a counterparty: nothing is dispatched and only the creating tenant ever sees it. A record carries no protocol — send none, and any value sent is discarded. True narrows the derived transfer type to RECORD; false or absent defers to the derivation, and it can never promote a derived RECORD to an INSTRUCTION. Use it for a self-recorded VASP-VASP deposit, and for a self-hosted leg: naming originator_vasp_id, or a self-hosted address, with protocol 'flow' and no is_record is the deprecated spelling of the same thing. On a self-hosted leg it is the only spelling under any other rail, or under none — those are rejected.",
            "default": false
          },
          "response_timeout": {
            "anyOf": [
              {
                "type": "string",
                "format": "duration"
              },
              {
                "type": "null"
              }
            ],
            "title": "Response Timeout"
          }
        },
        "type": "object",
        "required": [
          "amount",
          "originator_address",
          "originator_account_reference_id"
        ],
        "title": "CreateTransferRequest",
        "description": "POST /travelrule/transfers"
      },
      "CreateTransferResponse": {
        "properties": {
          "transfer_id": {
            "type": "string",
            "format": "uuid",
            "title": "Transfer Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "amount": {
            "type": "number",
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dti"
          },
          "chain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chain"
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Symbol"
          },
          "protocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Protocol"
          },
          "originator_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Vasp Id"
          },
          "beneficiary_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Vasp Id"
          },
          "originator_address": {
            "type": "string",
            "title": "Originator Address"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address"
          },
          "originator_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address Is Self Hosted"
          },
          "beneficiary_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address Is Self Hosted"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "originator_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Account Reference Id"
          },
          "beneficiary_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Account Reference Id"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "transfer_status": {
            "type": "string",
            "title": "Transfer Status"
          },
          "transfer_type": {
            "$ref": "#/components/schemas/TypeTransfer"
          },
          "amount_str": {
            "type": "string",
            "title": "Amount Str",
            "description": "Exact decimal-string form of the stored Display Amount.\n\nAdditive, output-only. The numeric ``amount`` is display-precision\nlimited (serialized as a JSON number for backwards compatibility);\n``amount_str`` is the precision-faithful field. The numeric/string\nsplit is transitional, to be consolidated in the next API version.\n\nAlways fixed-point notation, never scientific: the amount is written\nout in full at its stored scale, with no normalising, rounding or\ntrimming.",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "transfer_id",
          "amount",
          "originator_address",
          "transfer_status",
          "transfer_type",
          "amount_str"
        ],
        "title": "CreateTransferResponse",
        "description": ""
      },
      "EntityDetails": {
        "properties": {
          "entity_name": {
            "$ref": "#/components/schemas/EntityName",
            "description": "The object that contains the entity name fields."
          },
          "entity_localname": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EntityName"
              },
              {
                "type": "null"
              }
            ],
            "description": "The object that contains the entity local name fields."
          },
          "registration_country": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2
              },
              {
                "type": "null"
              }
            ],
            "title": "Registration Country",
            "description": "Country code of incorporation for the business."
          }
        },
        "type": "object",
        "required": [
          "entity_name"
        ],
        "title": "EntityDetails"
      },
      "EntityName": {
        "properties": {
          "name_type": {
            "$ref": "#/components/schemas/NameType"
          },
          "name_legal": {
            "type": "string",
            "maxLength": 100,
            "title": "Name Legal",
            "description": "Name of the business. Required if account_type is entity."
          },
          "name_business": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Business",
            "description": "Short name of the business (SHRT)."
          },
          "name_trading": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Trading",
            "description": "Trading name of the business (TRAD)."
          }
        },
        "type": "object",
        "required": [
          "name_type",
          "name_legal"
        ],
        "title": "EntityName"
      },
      "GetTransferDetailsResponse": {
        "properties": {
          "transfer_data": {
            "$ref": "#/components/schemas/_TransferData"
          },
          "originator_record": {
            "$ref": "#/components/schemas/_Record"
          },
          "beneficiary_record": {
            "$ref": "#/components/schemas/_Record"
          },
          "originator_vasp": {
            "$ref": "#/components/schemas/_VASP"
          },
          "beneficiary_vasp": {
            "$ref": "#/components/schemas/_VASP"
          },
          "originator_declared_record": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/_Record"
              },
              {
                "type": "null"
              }
            ]
          },
          "beneficiary_declared_record": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/_Record"
              },
              {
                "type": "null"
              }
            ]
          },
          "originator_vasp_declared_record": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/_VASP"
              },
              {
                "type": "null"
              }
            ]
          },
          "beneficiary_vasp_declared_record": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/_VASP"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "transfer_data",
          "originator_record",
          "beneficiary_record",
          "originator_vasp",
          "beneficiary_vasp"
        ],
        "title": "GetTransferDetailsResponse",
        "description": ""
      },
      "IndividualDetails": {
        "properties": {
          "individual_name": {
            "$ref": "#/components/schemas/IndividualName",
            "description": "Object that contains the individual name fields"
          },
          "individual_localname": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IndividualName"
              },
              {
                "type": "null"
              }
            ],
            "description": "Object that contains the individual local name fields"
          },
          "other_names": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/OtherIndividualName"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Other Names",
            "description": "Alias (ALIA), birth (BIRT) and maiden (MAID) names of the account holder."
          },
          "date_of_birth": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date Of Birth",
            "description": "Date of birth of the account holder."
          },
          "place_of_birth": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 70
              },
              {
                "type": "null"
              }
            ],
            "title": "Place Of Birth",
            "description": "Place of birth of the account holder."
          },
          "nationality_country": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2
              },
              {
                "type": "null"
              }
            ],
            "title": "Nationality Country",
            "description": "Country code of the nationality of the account holder."
          },
          "residence_country": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2
              },
              {
                "type": "null"
              }
            ],
            "title": "Residence Country",
            "description": "Country code of the place of residence of the account holder."
          }
        },
        "type": "object",
        "required": [
          "individual_name"
        ],
        "title": "IndividualDetails"
      },
      "IndividualName": {
        "properties": {
          "name_type": {
            "$ref": "#/components/schemas/NameType"
          },
          "name_first": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name First",
            "description": "First name of the account holder."
          },
          "name_middle": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Middle",
            "description": "Middle name of the account holder."
          },
          "name_last": {
            "type": "string",
            "maxLength": 100,
            "title": "Name Last",
            "description": "Last name of the account holder. Required if account_type is individual."
          }
        },
        "type": "object",
        "required": [
          "name_type",
          "name_last"
        ],
        "title": "IndividualName"
      },
      "ListTokensResponse": {
        "properties": {
          "chain": {
            "type": "string",
            "title": "Chain",
            "description": "Chain the asset lives on"
          },
          "symbol": {
            "type": "string",
            "title": "Symbol",
            "description": "Ticker recorded for the asset"
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Full name of the asset"
          },
          "dti": {
            "type": "string",
            "title": "Dti",
            "description": "Digital Token Identifier — the stable key for this asset"
          },
          "contract": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contract",
            "description": "Contract address or other technical reference, where the registry records one. This is what distinguishes two assets that share a ticker on the same chain."
          },
          "decimals": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decimals",
            "description": "Decimal precision, where the registry records one; null when it does not."
          },
          "dti_type": {
            "type": "integer",
            "title": "Dti Type",
            "description": "Registry asset type — 1 is a chain's native asset"
          }
        },
        "type": "object",
        "required": [
          "chain",
          "symbol",
          "name",
          "dti",
          "dti_type"
        ],
        "title": "ListTokensResponse",
        "description": "One sendable asset, as the DTI registry records it (issue #759)."
      },
      "ListTransfersResponse": {
        "properties": {
          "transfer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transfer Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dti"
          },
          "chain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chain"
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Symbol"
          },
          "protocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Protocol"
          },
          "originator_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Vasp Id"
          },
          "beneficiary_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Vasp Id"
          },
          "originator_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address"
          },
          "originator_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address Is Self Hosted"
          },
          "beneficiary_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address Is Self Hosted"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "originator_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Account Reference Id"
          },
          "beneficiary_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Account Reference Id"
          },
          "direction": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Direction"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "transfer_status": {
            "type": "string",
            "title": "Transfer Status"
          },
          "transfer_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TypeTransfer"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "transfer_status"
        ],
        "title": "ListTransfersResponse",
        "description": ""
      },
      "NameType": {
        "type": "string",
        "enum": [
          "LEGL"
        ],
        "title": "NameType"
      },
      "NationalIdDetails": {
        "properties": {
          "national_id_type": {
            "$ref": "#/components/schemas/NationalIdType",
            "description": "Required when national_id object is specified. Type of national identification."
          },
          "national_id": {
            "type": "string",
            "maxLength": 35,
            "title": "National Id",
            "description": "National identification number."
          },
          "issue_country": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2
              },
              {
                "type": "null"
              }
            ],
            "title": "Issue Country",
            "description": "Country that issued the national identification."
          },
          "registration_authority": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 50
              },
              {
                "type": "null"
              }
            ],
            "title": "Registration Authority",
            "description": "GLEIF Registration Authority code of the register that issued the national identification: `RA` followed by six digits, e.g. `RA000583`. This is the register's code, not the authority's name. Required for entity national IDs other than `LEIX`, and must be omitted for `LEIX`. Case-insensitive; normalised to upper case."
          }
        },
        "type": "object",
        "required": [
          "national_id_type",
          "national_id"
        ],
        "title": "NationalIdDetails"
      },
      "NationalIdType": {
        "type": "string",
        "enum": [
          "ARNU",
          "CCPT",
          "RAID",
          "DRLC",
          "FIIN",
          "TXID",
          "SOCS",
          "IDCD",
          "LEIX",
          "MISC"
        ],
        "title": "NationalIdType"
      },
      "OtherIndividualName": {
        "properties": {
          "name_type": {
            "$ref": "#/components/schemas/OtherNameType"
          },
          "name_first": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ],
            "title": "Name First",
            "description": "Secondary identifier of the name."
          },
          "name_last": {
            "type": "string",
            "maxLength": 100,
            "title": "Name Last",
            "description": "Primary identifier of the name."
          }
        },
        "type": "object",
        "required": [
          "name_type",
          "name_last"
        ],
        "title": "OtherIndividualName",
        "description": "An alias (ALIA), birth (BIRT) or maiden (MAID) name of the account holder."
      },
      "OtherNameType": {
        "type": "string",
        "enum": [
          "ALIA",
          "BIRT",
          "MAID"
        ],
        "title": "OtherNameType"
      },
      "Page_ListTokensResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ListTokensResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "title": "Page"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "title": "Size"
          },
          "pages": {
            "type": "integer",
            "minimum": 0,
            "title": "Pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "size",
          "pages"
        ],
        "title": "Page[ListTokensResponse]"
      },
      "Page_ListTransfersResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/ListTransfersResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "title": "Page"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "title": "Size"
          },
          "pages": {
            "type": "integer",
            "minimum": 0,
            "title": "Pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "size",
          "pages"
        ],
        "title": "Page[ListTransfersResponse]"
      },
      "Page_PartnerListTransfersResponse_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PartnerListTransfersResponse"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "title": "Page"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "title": "Size"
          },
          "pages": {
            "type": "integer",
            "minimum": 0,
            "title": "Pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "size",
          "pages"
        ],
        "title": "Page[PartnerListTransfersResponse]"
      },
      "Page_PartnerMemberVaspEntry_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PartnerMemberVaspEntry"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "title": "Page"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "title": "Size"
          },
          "pages": {
            "type": "integer",
            "minimum": 0,
            "title": "Pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "size",
          "pages"
        ],
        "title": "Page[PartnerMemberVaspEntry]"
      },
      "Page_PartnerVaspEntry_": {
        "properties": {
          "items": {
            "items": {
              "$ref": "#/components/schemas/PartnerVaspEntry"
            },
            "type": "array",
            "title": "Items"
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "title": "Total"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "title": "Page"
          },
          "size": {
            "type": "integer",
            "minimum": 1,
            "title": "Size"
          },
          "pages": {
            "type": "integer",
            "minimum": 0,
            "title": "Pages"
          }
        },
        "type": "object",
        "required": [
          "items",
          "total",
          "page",
          "size",
          "pages"
        ],
        "title": "Page[PartnerVaspEntry]"
      },
      "PartnerActionTransferResponse": {
        "properties": {
          "transfer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transfer Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dti"
          },
          "chain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chain"
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Symbol"
          },
          "originator_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Vasp Id"
          },
          "beneficiary_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Vasp Id"
          },
          "originator_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "originator_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Account Reference Id"
          },
          "beneficiary_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Account Reference Id"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "transfer_status": {
            "type": "string",
            "title": "Transfer Status"
          },
          "transfer_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TypeTransfer"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "transfer_status"
        ],
        "title": "PartnerActionTransferResponse",
        "description": "Partner-scoped action-transfer response, reporting the landed terminal status."
      },
      "PartnerAsset": {
        "properties": {
          "chain": {
            "type": "string",
            "title": "Chain",
            "description": "Chain the asset lives on"
          },
          "symbol": {
            "type": "string",
            "title": "Symbol",
            "description": "Ticker recorded for the asset"
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Full name of the asset"
          },
          "dti": {
            "type": "string",
            "title": "Dti",
            "description": "Digital Token Identifier (ISO 24165). The value to send as `dti` on `POST /partners/transfers`."
          },
          "contract": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Contract",
            "description": "Contract address or other technical reference, where the registry records one. Distinguishes two assets that share a symbol on one chain."
          },
          "decimals": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decimals",
            "description": "Decimal precision, where the registry records one; null otherwise."
          },
          "dti_type": {
            "type": "integer",
            "title": "Dti Type",
            "description": "Registry asset type; 1 is a chain's native asset"
          }
        },
        "type": "object",
        "required": [
          "chain",
          "symbol",
          "name",
          "dti",
          "dti_type"
        ],
        "title": "PartnerAsset",
        "description": "One DTI registry record: an asset a transfer can be created for."
      },
      "PartnerCreateTransferRequest": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "type": "string",
            "title": "Dti",
            "description": "Digital Token Identifier (ISO 24165) of the asset being transferred, as listed by `GET /partners/assets`."
          },
          "originator_vasp_id": {
            "type": "string",
            "title": "Originator Vasp Id",
            "description": "The originating member VASP, as either its Ospree `vasp_id` or your own `network_reference` for it -- `GET /partners/member-vasps` returns both for every member. A value that is an exact Ospree `vasp_id` is read as that VASP; any other value is matched against your network's references. Responses always report the Ospree `vasp_id`."
          },
          "beneficiary_vasp_id": {
            "type": "string",
            "title": "Beneficiary Vasp Id",
            "description": "The receiving Ospree VASP, as the `vasp_id` from `GET /partners/vasps` -- the VASP whose `encryption_public_key` the `ivms101` envelope is encrypted to. A `network_reference` is not accepted here."
          },
          "originator_address": {
            "type": "string",
            "title": "Originator Address"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address",
            "description": "The wallet address of the beneficiary where payment will be received."
          },
          "originator_account_reference_id": {
            "type": "string",
            "title": "Originator Account Reference Id"
          },
          "beneficiary_account_reference_id": {
            "type": "string",
            "title": "Beneficiary Account Reference Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "ivms101": {
            "type": "string",
            "title": "Ivms101"
          }
        },
        "type": "object",
        "required": [
          "amount",
          "dti",
          "originator_vasp_id",
          "beneficiary_vasp_id",
          "originator_address",
          "originator_account_reference_id",
          "beneficiary_account_reference_id",
          "ivms101"
        ],
        "title": "PartnerCreateTransferRequest",
        "description": "``POST /api/v2/travelrule/partners/transfers`` request body.\n\nCreate is for inbound VASP-VASP deposits into the Ospree network.\n``originator_vasp_id`` is the originating member VASP, named by either id\n``GET /partners/member-vasps`` returns for it, and ``beneficiary_vasp_id`` is\nthe receiving Ospree VASP whose transport key the ``ivms101`` envelope was\nencrypted to. ``ivms101`` is the encrypted JWE envelope carried verbatim."
      },
      "PartnerCreateTransferResponse": {
        "properties": {
          "transfer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transfer Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dti"
          },
          "chain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chain"
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Symbol"
          },
          "originator_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Vasp Id"
          },
          "beneficiary_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Vasp Id"
          },
          "originator_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "originator_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Account Reference Id"
          },
          "beneficiary_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Account Reference Id"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "transfer_status": {
            "type": "string",
            "title": "Transfer Status"
          },
          "transfer_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TypeTransfer"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "transfer_status"
        ],
        "title": "PartnerCreateTransferResponse",
        "description": "Partner-scoped create-transfer response. The 201 reports ``REVIEW``."
      },
      "PartnerListTransfersResponse": {
        "properties": {
          "transfer_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transfer Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "amount": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dti"
          },
          "chain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chain"
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Symbol"
          },
          "originator_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Vasp Id"
          },
          "beneficiary_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Vasp Id"
          },
          "originator_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "originator_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Account Reference Id"
          },
          "beneficiary_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Account Reference Id"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "transfer_status": {
            "type": "string",
            "title": "Transfer Status"
          },
          "transfer_type": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TypeTransfer"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "transfer_status"
        ],
        "title": "PartnerListTransfersResponse",
        "description": "Partner-scoped list-transfers row."
      },
      "PartnerMemberVaspEntry": {
        "properties": {
          "vasp_id": {
            "type": "string",
            "title": "Vasp Id",
            "description": "Ospree `vasp_id`. Either this or `network_reference` may be sent as `originator_vasp_id` on POST /partners/transfers; this one always wins a tie."
          },
          "network_reference": {
            "type": "string",
            "title": "Network Reference",
            "description": "The partner's own identifier for this VASP (register-or-get key). May also be sent as `originator_vasp_id` on POST /partners/transfers, which resolves it to `vasp_id`."
          },
          "name_legal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Legal"
          },
          "lei": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lei"
          },
          "is_verified_vasp": {
            "type": "boolean",
            "title": "Is Verified Vasp",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "vasp_id",
          "network_reference"
        ],
        "title": "PartnerMemberVaspEntry",
        "description": "A member VASP on the partner's network, resolved to its Ospree ``vasp_id``."
      },
      "PartnerRegisterMemberVaspRequest": {
        "properties": {
          "network_reference": {
            "type": "string",
            "maxLength": 255,
            "minLength": 1,
            "title": "Network Reference",
            "description": "The partner's own identifier for this VASP. Idempotency key."
          },
          "name_legal": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1,
            "title": "Name Legal",
            "description": "Legal name for a newly-created directory entry."
          },
          "lei": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 20,
                "minLength": 20
              },
              {
                "type": "null"
              }
            ],
            "title": "Lei"
          },
          "registration_country_code": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 2,
                "minLength": 2
              },
              {
                "type": "null"
              }
            ],
            "title": "Registration Country Code"
          }
        },
        "type": "object",
        "required": [
          "network_reference",
          "name_legal"
        ],
        "title": "PartnerRegisterMemberVaspRequest",
        "description": "Register-or-get a member VASP by the partner's network reference."
      },
      "PartnerVaspEntry": {
        "properties": {
          "vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vasp Id"
          },
          "name_legal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Legal"
          },
          "name_business": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Business"
          },
          "name_local_legal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Local Legal"
          },
          "name_local_business": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Local Business"
          },
          "registration_country_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Registration Country Code"
          },
          "address_type_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Type Code"
          },
          "address_line": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Line"
          },
          "address_street_no": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Street No"
          },
          "address_street_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Street Name"
          },
          "address_building_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Building Name"
          },
          "address_floor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Floor"
          },
          "address_room": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Room"
          },
          "address_department": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Department"
          },
          "address_subdepartment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Subdepartment"
          },
          "address_postbox": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Postbox"
          },
          "address_city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address City"
          },
          "address_city_location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address City Location"
          },
          "address_region": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Region"
          },
          "address_district": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address District"
          },
          "address_postcode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Postcode"
          },
          "address_country_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Country Code"
          },
          "address_country_desc": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Country Desc"
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website"
          },
          "national_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "National Id"
          },
          "national_id_issue_country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "National Id Issue Country"
          },
          "lei": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lei"
          },
          "is_verified_vasp": {
            "type": "boolean",
            "title": "Is Verified Vasp",
            "default": false
          },
          "encryption_public_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Encryption Public Key",
            "description": "Ospree-side per-VASP public key used to encrypt the ivms101 envelope addressed to this VASP. Base64url-encoded raw 32-byte X25519 public key."
          }
        },
        "type": "object",
        "title": "PartnerVaspEntry",
        "description": "VASP directory entry served to a partner over ``GET /vasps(/search)``."
      },
      "PartnerWebhookRegistration": {
        "properties": {
          "webhook_url": {
            "type": "string",
            "title": "Webhook Url"
          },
          "webhook_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Webhook Secret",
            "description": "Plaintext signing secret — present only on the call that minted it, never again."
          }
        },
        "type": "object",
        "required": [
          "webhook_url"
        ],
        "title": "PartnerWebhookRegistration",
        "description": "The registration response, with the signing secret only when this call minted one."
      },
      "PartnerWebhookRegistrationRequest": {
        "properties": {
          "webhook_url": {
            "type": "string",
            "maxLength": 2048,
            "minLength": 1,
            "title": "Webhook Url",
            "description": "Publicly reachable HTTPS endpoint Ospree POSTs transfer status events to."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "webhook_url"
        ],
        "title": "PartnerWebhookRegistrationRequest",
        "description": "The webhook registration request body: one endpoint URL, and nothing else.",
        "example": {
          "webhook_url": "https://partner.example.com/ospree/webhooks"
        }
      },
      "PartnerWebhookView": {
        "properties": {
          "webhook_url": {
            "type": "string",
            "title": "Webhook Url"
          },
          "secret_set": {
            "type": "boolean",
            "title": "Secret Set",
            "description": "Whether deliveries to this endpoint are signed."
          }
        },
        "type": "object",
        "required": [
          "webhook_url",
          "secret_set"
        ],
        "title": "PartnerWebhookView",
        "description": "Details on a registered webhook endpoint. Never carries secret material."
      },
      "TypeTransfer": {
        "type": "string",
        "enum": [
          "INSTRUCTION",
          "RECORD"
        ],
        "title": "TypeTransfer",
        "description": "\"INSTRUCTION\" is for:\n - VASP-VASP deposits initiated by counterparty, and\n - withdrawals initiated by logged-in VASP.\n\n\"RECORD\" is for:\n - self-hosted transfers and\n - VASP-VASP deposits not initiated by counterparty."
      },
      "UpdateTransferRequest": {
        "properties": {
          "transaction_hash": {
            "type": "string",
            "title": "Transaction Hash"
          }
        },
        "type": "object",
        "required": [
          "transaction_hash"
        ],
        "title": "UpdateTransferRequest",
        "description": ""
      },
      "UpdateTransferResponse": {
        "properties": {
          "transfer_id": {
            "type": "string",
            "format": "uuid",
            "title": "Transfer Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "amount": {
            "type": "number",
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dti"
          },
          "chain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chain"
          },
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Symbol"
          },
          "protocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Protocol"
          },
          "originator_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Vasp Id"
          },
          "beneficiary_vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Vasp Id"
          },
          "originator_address": {
            "type": "string",
            "title": "Originator Address"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address"
          },
          "originator_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address Is Self Hosted"
          },
          "beneficiary_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address Is Self Hosted"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "originator_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Account Reference Id"
          },
          "beneficiary_account_reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Account Reference Id"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "transfer_status": {
            "type": "string",
            "title": "Transfer Status"
          },
          "transfer_type": {
            "$ref": "#/components/schemas/TypeTransfer"
          },
          "amount_str": {
            "type": "string",
            "title": "Amount Str",
            "description": "Exact decimal-string form of the stored Display Amount.\n\nAdditive, output-only. The numeric ``amount`` is display-precision\nlimited (serialized as a JSON number for backwards compatibility);\n``amount_str`` is the precision-faithful field. The numeric/string\nsplit is transitional, to be consolidated in the next API version.\n\nAlways fixed-point notation, never scientific: the amount is written\nout in full at its stored scale, with no normalising, rounding or\ntrimming.",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "transfer_id",
          "amount",
          "originator_address",
          "transfer_status",
          "transfer_type",
          "amount_str"
        ],
        "title": "UpdateTransferResponse",
        "description": ""
      },
      "_Record": {
        "properties": {
          "display_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "customer_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Customer Id"
          },
          "account_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account Type"
          },
          "account_no": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account No"
          },
          "name_first": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name First"
          },
          "name_middle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Middle"
          },
          "name_last": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Last"
          },
          "name_local_first": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Local First"
          },
          "name_local_middle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Local Middle"
          },
          "name_local_last": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Local Last"
          },
          "date_of_birth": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date Of Birth"
          },
          "place_of_birth": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Place Of Birth"
          },
          "nationality_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nationality Code"
          },
          "residence_country_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Residence Country Code"
          },
          "name_legal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Legal"
          },
          "name_business": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Business"
          },
          "name_local_legal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Local Legal"
          },
          "name_local_business": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Local Business"
          },
          "registration_country_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Registration Country Code"
          },
          "address_line": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Line"
          },
          "address_street_no": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Street No"
          },
          "address_street_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Street Name"
          },
          "address_building_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Building Name"
          },
          "address_floor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Floor"
          },
          "address_room": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Room"
          },
          "address_department": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Department"
          },
          "address_subdepartment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Subdepartment"
          },
          "address_postbox": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Postbox"
          },
          "address_city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address City"
          },
          "address_city_location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address City Location"
          },
          "address_region": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Region"
          },
          "address_district": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address District"
          },
          "address_postcode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Postcode"
          },
          "address_country_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Country Code"
          },
          "national_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "National Id"
          },
          "national_id_type_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "National Id Type Code"
          },
          "national_id_issue_country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "National Id Issue Country"
          },
          "national_id_registration_authority": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "National Id Registration Authority"
          }
        },
        "type": "object",
        "title": "_Record"
      },
      "_TransferData": {
        "properties": {
          "transfer_id": {
            "type": "string",
            "format": "uuid",
            "title": "Transfer Id"
          },
          "reference_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference Id"
          },
          "amount": {
            "type": "number",
            "title": "Amount"
          },
          "amount_usd": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount Usd"
          },
          "dti": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dti"
          },
          "chain": {
            "type": "string",
            "title": "Chain"
          },
          "symbol": {
            "type": "string",
            "title": "Symbol"
          },
          "protocol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Protocol"
          },
          "originator_address": {
            "type": "string",
            "title": "Originator Address"
          },
          "beneficiary_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address"
          },
          "originator_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Originator Address Is Self Hosted"
          },
          "beneficiary_address_is_self_hosted": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Beneficiary Address Is Self Hosted"
          },
          "routing_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Routing Number"
          },
          "transaction_hash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transaction Hash"
          },
          "transfer_status": {
            "type": "string",
            "title": "Transfer Status"
          },
          "transfer_type": {
            "$ref": "#/components/schemas/TypeTransfer"
          },
          "created": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created"
          },
          "created_by_desc": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created By Desc"
          },
          "failure_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failure Reason",
            "description": "Why the last outbound message for this transfer did not reach the counterparty; null when none failed"
          },
          "reject_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reject Error",
            "description": "The return status the counterparty rejected this transfer with, by name (e.g. HIGH_RISK); null unless the transfer is REJECTED"
          },
          "reject_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reject Message",
            "description": "The counterparty's explanation of the rejection; null unless the transfer is REJECTED"
          }
        },
        "type": "object",
        "required": [
          "transfer_id",
          "amount",
          "chain",
          "symbol",
          "protocol",
          "originator_address",
          "transfer_status",
          "transfer_type"
        ],
        "title": "_TransferData"
      },
      "_VASP": {
        "properties": {
          "vasp_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vasp Id"
          },
          "name_legal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Legal"
          },
          "name_business": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Business"
          },
          "name_local_legal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Local Legal"
          },
          "name_local_business": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name Local Business"
          },
          "registration_country_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Registration Country Code"
          },
          "address_type_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Type Code"
          },
          "address_line": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Line"
          },
          "address_street_no": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Street No"
          },
          "address_street_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Street Name"
          },
          "address_building_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Building Name"
          },
          "address_floor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Floor"
          },
          "address_room": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Room"
          },
          "address_department": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Department"
          },
          "address_subdepartment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Subdepartment"
          },
          "address_postbox": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Postbox"
          },
          "address_city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address City"
          },
          "address_city_location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address City Location"
          },
          "address_region": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Region"
          },
          "address_district": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address District"
          },
          "address_postcode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Postcode"
          },
          "address_country_code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Country Code"
          },
          "address_country_desc": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address Country Desc"
          },
          "website": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Website"
          },
          "national_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "National Id"
          },
          "national_id_issue_country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "National Id Issue Country"
          }
        },
        "type": "object",
        "title": "_VASP"
      }
    },
    "securitySchemes": {
      "HTTPBearer": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "tags": [
    {
      "name": "Transfers",
      "description": "Create and manage travel-rule transfers through their lifecycle."
    },
    {
      "name": "Tokens",
      "description": "The tokens (assets) supported for travel-rule transfers."
    }
  ],
  "servers": [
    {
      "url": "https://dev-api.ospree.io",
      "description": "Development"
    }
  ]
}
