> For the complete documentation index, see [llms.txt](https://docs.ospree.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ospree.io/developers/travel-rule/openapi/models.md).

# Models

## The AccountCategory object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"AccountCategory":{"type":"string","enum":["customer","non-customer"],"title":"AccountCategory"}}}}
```

## The AccountRole object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."}}}}
```

## The AccountType object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"AccountType":{"type":"string","enum":["individual","entity"],"title":"AccountType"}}}}
```

## The ActionTransferRequest object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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":""}}}}
```

## The ActionTransferResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."},"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."}}}}
```

## The ActionTransferStatus object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ActionTransferStatus":{"type":"string","enum":["complete","reject","cancel","accept","repair"],"title":"ActionTransferStatus"}}}}
```

## The AddressDetails object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"}}}}
```

## The AddressType object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"AddressType":{"type":"string","enum":["HOME","BIZZ","GEOG"],"title":"AddressType"}}}}
```

## The ApiErrorResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"}}}}
```

## The ApiFailResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"}}}}
```

## The ApiSuccessResponse\_ActionTransferResponse\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_ActionTransferResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/ActionTransferResponse"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[ActionTransferResponse]"},"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."},"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."}}}}
```

## The ApiSuccessResponse\_CreateTransferResponse\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_CreateTransferResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/CreateTransferResponse"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[CreateTransferResponse]"},"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":""},"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."}}}}
```

## The ApiSuccessResponse\_GetTransferDetailsResponse\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_GetTransferDetailsResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/GetTransferDetailsResponse"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[GetTransferDetailsResponse]"},"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":""},"_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"},"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."},"_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"},"_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"}}}}
```

## The ApiSuccessResponse\_Page\_ListTokensResponse\_\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]]"},"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]"},"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)."}}}}
```

## The ApiSuccessResponse\_Page\_ListTransfersResponse\_\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]]"},"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]"},"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":""},"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."}}}}
```

## The ApiSuccessResponse\_Page\_PartnerListTransfersResponse\_\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]]"},"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]"},"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."},"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."}}}}
```

## The ApiSuccessResponse\_Page\_PartnerMemberVaspEntry\_\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]]"},"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]"},"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``."}}}}
```

## The ApiSuccessResponse\_Page\_PartnerVaspEntry\_\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]]"},"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]"},"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)``."}}}}
```

## The ApiSuccessResponse\_PartnerActionTransferResponse\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_PartnerActionTransferResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/PartnerActionTransferResponse"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[PartnerActionTransferResponse]"},"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."},"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."}}}}
```

## The ApiSuccessResponse\_PartnerCreateTransferResponse\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_PartnerCreateTransferResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/PartnerCreateTransferResponse"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[PartnerCreateTransferResponse]"},"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``."},"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."}}}}
```

## The ApiSuccessResponse\_PartnerMemberVaspEntry\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_PartnerMemberVaspEntry_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/PartnerMemberVaspEntry"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[PartnerMemberVaspEntry]"},"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``."}}}}
```

## The ApiSuccessResponse\_PartnerWebhookRegistration\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_PartnerWebhookRegistration_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/PartnerWebhookRegistration"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[PartnerWebhookRegistration]"},"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."}}}}
```

## The ApiSuccessResponse\_PartnerWebhookView\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_PartnerWebhookView_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/PartnerWebhookView"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[PartnerWebhookView]"},"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."}}}}
```

## The ApiSuccessResponse\_UpdateTransferResponse\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_UpdateTransferResponse_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"$ref":"#/components/schemas/UpdateTransferResponse"},{"type":"null"}]}},"type":"object","title":"ApiSuccessResponse[UpdateTransferResponse]"},"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":""},"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."}}}}
```

## The ApiSuccessResponse\_bool\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"ApiSuccessResponse_bool_":{"properties":{"status":{"type":"string","title":"Status","default":"success"},"data":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Data"}},"type":"object","title":"ApiSuccessResponse[bool]"}}}}
```

## The ApiSuccessResponse\_list\_PartnerAsset\_\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]]"},"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."}}}}
```

## The CreateAccountInput object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"},"AccountType":{"type":"string","enum":["individual","entity"],"title":"AccountType"},"AccountCategory":{"type":"string","enum":["customer","non-customer"],"title":"AccountCategory"},"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"},"NameType":{"type":"string","enum":["LEGL"],"title":"NameType"},"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"},"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"},"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"},"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"},"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."}}}}
```

## The CreateTransferRequest object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"},"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"},"AccountType":{"type":"string","enum":["individual","entity"],"title":"AccountType"},"AccountCategory":{"type":"string","enum":["customer","non-customer"],"title":"AccountCategory"},"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"},"NameType":{"type":"string","enum":["LEGL"],"title":"NameType"},"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"},"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"},"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"},"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"},"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."},"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."}}}}
```

## The CreateTransferResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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":""},"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."}}}}
```

## The EntityDetails object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"},"NameType":{"type":"string","enum":["LEGL"],"title":"NameType"}}}}
```

## The EntityName object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"},"NameType":{"type":"string","enum":["LEGL"],"title":"NameType"}}}}
```

## The GetTransferDetailsResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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":""},"_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"},"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."},"_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"},"_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"}}}}
```

## The IndividualDetails object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"},"NameType":{"type":"string","enum":["LEGL"],"title":"NameType"},"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"}}}}
```

## The IndividualName object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"},"NameType":{"type":"string","enum":["LEGL"],"title":"NameType"}}}}
```

## The ListTokensResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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)."}}}}
```

## The ListTransfersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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":""},"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."}}}}
```

## The NameType object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"NameType":{"type":"string","enum":["LEGL"],"title":"NameType"}}}}
```

## The NationalIdDetails object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"}}}}
```

## The NationalIdType object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"NationalIdType":{"type":"string","enum":["ARNU","CCPT","RAID","DRLC","FIIN","TXID","SOCS","IDCD","LEIX","MISC"],"title":"NationalIdType"}}}}
```

## The OtherIndividualName object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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"}}}}
```

## The OtherNameType object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"OtherNameType":{"type":"string","enum":["ALIA","BIRT","MAID"],"title":"OtherNameType"}}}}
```

## The Page\_ListTokensResponse\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]"},"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)."}}}}
```

## The Page\_ListTransfersResponse\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]"},"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":""},"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."}}}}
```

## The Page\_PartnerListTransfersResponse\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]"},"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."},"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."}}}}
```

## The Page\_PartnerMemberVaspEntry\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]"},"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``."}}}}
```

## The Page\_PartnerVaspEntry\_ object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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]"},"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)``."}}}}
```

## The PartnerActionTransferResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."},"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."}}}}
```

## The PartnerAsset object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."}}}}
```

## The PartnerCreateTransferRequest object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."}}}}
```

## The PartnerCreateTransferResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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``."},"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."}}}}
```

## The PartnerListTransfersResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."},"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."}}}}
```

## The PartnerMemberVaspEntry object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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``."}}}}
```

## The PartnerRegisterMemberVaspRequest object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."}}}}
```

## The PartnerVaspEntry object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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)``."}}}}
```

## The PartnerWebhookRegistration object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."}}}}
```

## The PartnerWebhookRegistrationRequest object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."}}}}
```

## The PartnerWebhookView object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."}}}}
```

## The TypeTransfer object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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."}}}}
```

## The UpdateTransferRequest object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"UpdateTransferRequest":{"properties":{"transaction_hash":{"type":"string","title":"Transaction Hash"}},"type":"object","required":["transaction_hash"],"title":"UpdateTransferRequest","description":""}}}}
```

## The UpdateTransferResponse object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"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":""},"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."}}}}
```

## The \_Record object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"_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"}}}}
```

## The \_TransferData object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"_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"},"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."}}}}
```

## The \_VASP object

```json
{"openapi":"3.1.0","info":{"title":"Ospree Travel Rule API","version":"2.0.0"},"components":{"schemas":{"_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"}}}}
```
