{"openapi":"3.0.3","info":{"title":"Byzantine Integrator API","description":"Byzantine REST API for integrators.","license":{"name":""},"version":"0.2.0"},"servers":[{"url":"https://sandbox.api.byzantine.fi","description":"Sandbox"}],"paths":{"/v1/health":{"get":{"tags":["API health"],"summary":"Health check","description":"Returns the health status of the API","operationId":"health_check","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/query/get-user-details":{"get":{"tags":["Customer management"],"summary":"Get details of a single user","description":"This endpoint returns comprehensive information about a user including:\n- Basic user information (name, email, address)\n- Verification status\n- Associated accounts details","operationId":"get_user_details","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"userId","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}},{"name":"email","in":"query","required":false,"schema":{"type":"string","nullable":true}}],"responses":{"200":{"description":"User details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetUserResponse"}}}},"400":{"description":"Bad request - Invalid user_id or email"},"404":{"description":"User not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-entity-details":{"get":{"tags":["Customer management"],"summary":"Get details of a single entity","description":"This endpoint returns comprehensive information about a business entity including:\n- Basic business information (name, email, addresses)\n- Associated account details\n- Team members (users who are part of the team)\n- Associated persons (beneficiaries and representatives)\n- Pending invitations (invitations that are pending acceptance)","operationId":"get_entity_details","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"entityId","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Uuid"}}],"responses":{"200":{"description":"Entity details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetEntityResponse"}}}},"400":{"description":"Bad request - Invalid entity_id"},"404":{"description":"Entity not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-associated-person-details":{"get":{"tags":["Customer management"],"summary":"Get details of a single associated person","description":"This endpoint returns the full record of one beneficiary or representative of an entity:\n- Personal information (name, contact, birth details, residential address)\n- Beneficiary details (type, title held at the business, ownership share)\n- Verification status and the documents still missing\n\nThe `beneficiaryId` is returned by `get-entity-details` and by the associated person submit\nendpoints. A person belonging to another integrator returns the same 404 as one that does\nnot exist, so this endpoint never reveals the existence of a foreign record.","operationId":"get_associated_person_details","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"beneficiaryId","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Uuid"}}],"responses":{"200":{"description":"Associated person retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssociatedPersonResponse"}}}},"400":{"description":"Bad request - Invalid beneficiary_id"},"404":{"description":"Associated person not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-customers":{"get":{"tags":["Customer management"],"summary":"List all customers","description":"Returns business customers (entities with their team members) and/or individual customers (users without an entity).\nUse the `customer_type` query parameter to filter:\n- `business`: only business customers\n- `individual`: only individual customers\n- `all` (default): both business and individual customers","operationId":"get_customers","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"customerType","in":"query","description":"Filter by customer type: \"business\", \"individual\", or \"all\" (default: \"all\")","required":false,"schema":{"$ref":"#/components/schemas/CustomerQueryType"}}],"responses":{"200":{"description":"Customers retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCustomersResponse"}}}},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/create-entity-account":{"post":{"tags":["Customer management"],"summary":"Create entity","description":"`email` and `associatedPersons.email` must be unique at each call of the endpoint.\nFor emails, you can use the `+` sign to make them unique, e.g. byzcorp+1@example.com.","operationId":"create_entity_account","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Byzantine entity account creation body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEntityAccountRequest"}}},"required":true},"responses":{"200":{"description":"Entity account created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEntityAccountResponse"}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/create-individual-account":{"post":{"tags":["Customer management"],"summary":"Create individual account","description":"The account beneficiary is the person described in `user_info` (the KYC subject).\n`root_users` are the signers: the owner themselves (same email), or a\nwealth manager / CGP operating on the owner's behalf.\n\n`email` must be unique at each call of the endpoint.\nYou can use the `+` sign to make them unique, e.g. alice+1@example.com.\nIt is possible to create an individual account with only the following details and then call the `update-individual-account` to complete the application:\n- `firstName`\n- `lastName`\n- `email`\n- `byzantineTermsSignedAt`","operationId":"create_individual_account","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Byzantine individual account creation body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIndividualAccountRequest"}}},"required":true},"responses":{"200":{"description":"Individual account created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIndividualAccountResponse"}}}},"400":{"description":"Invalid request payload"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/update-individual-account":{"patch":{"tags":["Customer management"],"summary":"Update an individual account's user details","description":"It is possible to call this endpoint as many times as necessary to submit additional information/documents to complete the account.\nOnly the `accountId` is required.","operationId":"update_individual_account","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Update individual account details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateIndividualAccountRequest"}}},"required":true},"responses":{"200":{"description":"Individual account updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateIndividualAccountResponse"}}}},"400":{"description":"Invalid request payload"},"404":{"description":"Account not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/update-entity-account":{"patch":{"tags":["Customer management"],"summary":"Update an entity account's company details","operationId":"update_entity_account","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Update entity account details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEntityAccountRequest"}}},"required":true},"responses":{"200":{"description":"Entity account updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEntityAccountResponse"}}}},"400":{"description":"Invalid request payload"},"404":{"description":"Account not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/add-associated-person":{"post":{"tags":["Customer management"],"summary":"Add an associated person to an entity account","operationId":"add_associated_person","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Add an associated person to an entity account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddAssociatedPersonRequest"}}},"required":true},"responses":{"201":{"description":"Associated person added successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssociatedPersonResponse"}}}},"400":{"description":"Invalid request payload"},"404":{"description":"Account not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/update-associated-person":{"patch":{"tags":["Customer management"],"summary":"Update an associated person's details","operationId":"update_associated_person","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Update an associated person's details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssociatedPersonRequest"}}},"required":true},"responses":{"200":{"description":"Associated person updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAssociatedPersonResponse"}}}},"400":{"description":"Invalid request payload"},"404":{"description":"Account or beneficiary not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-account-balances":{"get":{"tags":["Account management"],"summary":"Get single account balances","description":"Fetch all vault positions for a specific account from the indexer.\nReturns balance information including vault details and current price per share.\nIf `chain_id` is not specified, returns balances for all chains.\nIf `include_test_vaults` is not specified, defaults to false (excludes test vaults).","operationId":"get_account_balances","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"accountId","in":"query","description":"The account ID","required":true,"schema":{"$ref":"#/components/schemas/Uuid"}},{"name":"chainId","in":"query","description":"The chain ID to get balances for (optional, default = all chains)","required":false,"schema":{"type":"integer","format":"int32","nullable":true}},{"name":"includeTestVaults","in":"query","description":"Whether to include test vaults (optional, default = false)","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Account balances retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountBalancesResponse"}}}},"400":{"description":"Bad request - Invalid account ID"},"404":{"description":"Account not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-account-details":{"get":{"tags":["Account management"],"summary":"Get details of a single account","description":"Returns details for a specific account including name, type, wallet address,\nand associated entity information if applicable.","operationId":"get_account_details","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"accountId","in":"query","description":"The account ID","required":true,"schema":{"$ref":"#/components/schemas/Uuid"}}],"responses":{"200":{"description":"Account details retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAccountDetailsResponse"}}}},"404":{"description":"Account not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-bank-accounts":{"get":{"tags":["Account management"],"summary":"List bank accounts","description":"Fetch all associated bank accounts for a specific Byzantine account ID.","operationId":"get_bank_accounts","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"accountId","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Uuid"}},{"name":"currency","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Currency"}],"nullable":true}}],"responses":{"200":{"description":"Off-ramp addresses retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetBankAccountsResponse"}}}},"400":{"description":"Bad request - Invalid account_id"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/add-bank-account":{"post":{"tags":["Account management"],"summary":"Add bank account","description":"Add a bank account to withdraw to. At least one bank account must be added before any off-ramp withdrawal can be initated.","operationId":"add_bank_account","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Bank account details to associate with the Byzantine account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddBankAccountRequest"}}},"required":true},"responses":{"201":{"description":"Bank account added successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddBankAccountResponse"}}}},"400":{"description":"Invalid request payload"},"401":{"description":"Unauthorized - Account does not belong to integrator"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-invitations-by-account-id":{"get":{"tags":["Account management"],"summary":"List invitations by account","description":"Fetch all invitations associated with a specific Byzantine account ID.\nReturns invitation details including the invited user's name and email, account name, and inviter name.","operationId":"get_invitations_by_account_id","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"accountId","in":"query","description":"The account ID to get invitations for","required":true,"schema":{"$ref":"#/components/schemas/Uuid"}}],"responses":{"200":{"description":"Invitations retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInvitationsResponse"}}}},"400":{"description":"Bad request - Invalid account_id"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-invitations-by-email":{"get":{"tags":["Account management"],"summary":"List invitations by email","description":"Fetch all invitations for a specific email address.","operationId":"get_invitations_by_email","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"email","in":"query","description":"The email to get invitations for","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Invitations retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetInvitationsResponse"}}}},"400":{"description":"Bad request - Invalid email"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-all-invitations":{"get":{"tags":["Account management"],"summary":"List all invitations across every account of the authenticated integrator","description":"Returns invitations across all accounts owned by the integrator, paginated and ordered (DESC by default).","operationId":"get_all_invitations","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size (max 100). Defaults to 20.","required":false,"schema":{"type":"integer","format":"int64","nullable":true}},{"name":"offset","in":"query","description":"Number of records to skip. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int64","nullable":true}},{"name":"order","in":"query","description":"Sort order over the field `updatedAt`. `desc` (default) returns the most recently updated first;\n`asc` returns the oldest first. Combine with `offset` to paginate through every invitation.","required":false,"schema":{"$ref":"#/components/schemas/SortOrder"}}],"responses":{"200":{"description":"Invitations retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAllInvitationsResponse"}}}},"400":{"description":"Bad request"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-invite-users-payload-passkey":{"post":{"tags":["Account management"],"summary":"Step 1 Get invite users payload (passkey)","description":"Get the payload to sign in order to invite users to an existing account. Part of the passkey authentication flow.","operationId":"get_invite_users_payload_passkey","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Body to invite new users to an existing account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteUsersRequest"}}},"required":true},"responses":{"201":{"description":"Payload to sign created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteUsersRequestResponse"}}}},"400":{"description":"Invalid request payload"},"401":{"description":"Unauthorized - Account does not belong to integrator"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/invite-users":{"post":{"tags":["Account management"],"summary":"Step 2 Send invitations (passkey)","description":"Send an invitation to users to join a Byzantine account. If the users did not yet do a KYC on Byzantine, an email will ask them to do so.","operationId":"invite_users","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Body to invite new users to an existing account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteUsersRequestBodyPasskey"}}},"required":true},"responses":{"201":{"description":"Users invited successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteUsersResponse"}}}},"400":{"description":"Invalid request payload"},"401":{"description":"Unauthorized - Account does not belong to integrator"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-update-users-role-payload-passkey":{"post":{"tags":["Account management"],"summary":"Step 1 Get update role payload (passkey)","description":"Get the payload to sign in order to update users' roles within a Byzantine account. Part of the passkey authentication flow.","operationId":"get_update_users_role_payload_passkey","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Body to update users' roles within a Byzantine account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUsersRoleRequest"}}},"required":true},"responses":{"201":{"description":"Payload to sign created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUsersRoleRequestResponse"}}}},"400":{"description":"Invalid request payload"},"401":{"description":"Unauthorized - Account does not belong to integrator"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/update-users-role":{"post":{"tags":["Account management"],"summary":"Step 2 Update users role (passkey)","description":"Update the roles of users of a Byzantine account. This action must be approved by the current root quorum.","operationId":"update_users_role","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Body to update the root quorum of a Byzantine account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUsersRoleRequestBodyPasskey"}}},"required":true},"responses":{"200":{"description":"Users' roles updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUsersRoleResponse"}}}},"400":{"description":"Invalid request payload"},"401":{"description":"Unauthorized - Account does not belong to integrator or user is not a root user"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/top-vaults":{"get":{"tags":["Products"],"summary":"List all products","description":"Returns a list of all Byzantine vaults from configuration. \"Vaults\" are deposit products, the main entities in the Byzantine protocol.","operationId":"get_top_vaults","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of top vaults retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopVault"}}}}}},"security":[{"integrator_auth":[]}]}},"/v1/query/apy/{vault_id}":{"get":{"tags":["Products"],"summary":"Get single product APY","description":"Calculate APY for daily, weekly, monthly, and yearly periods with fallback to oldest available data.","operationId":"get_vault_apy","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"vault_id","in":"path","description":"Vault ID","required":true,"schema":{"type":"string"}},{"name":"period","in":"query","description":"Specific period (daily, weekly, monthly, yearly, all)","required":false,"schema":{"type":"string","nullable":true}}],"responses":{"200":{"description":"APY data retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApyResponse"}}}},"404":{"description":"Vault not found or insufficient data"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"integrator_auth":[]}]}},"/v1/query/history/{vault_id}":{"get":{"tags":["Products"],"summary":"Get single vault history","description":"Returns hourly aggregated share price data for a vault.","operationId":"get_vault_history","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"vault_id","in":"path","description":"Vault ID","required":true,"schema":{"type":"string"}},{"name":"start_date","in":"query","description":"Start date for history","required":false,"schema":{"type":"string","format":"date-time","nullable":true}},{"name":"end_date","in":"query","description":"End date for history","required":false,"schema":{"type":"string","format":"date-time","nullable":true}},{"name":"limit","in":"query","description":"Limit number of results (default: 1000)","required":false,"schema":{"type":"integer","format":"int64","nullable":true}},{"name":"offset","in":"query","description":"Offset for pagination (default: 0)","required":false,"schema":{"type":"integer","format":"int64","nullable":true}},{"name":"order","in":"query","description":"Order by timestamp: asc or desc (default: asc)","required":false,"schema":{"type":"string","nullable":true}}],"responses":{"200":{"description":"Historical data retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoryResponse"}}}},"404":{"description":"Vault not found"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"integrator_auth":[]}]}},"/v1/query/assets":{"get":{"tags":["Products"],"summary":"Get all assets","operationId":"get_assets","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Assets retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Asset"}}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-transactions":{"get":{"tags":["Transactions"],"summary":"List all transactions","description":"Returns all deposit, withdrawal, and approval transactions with pending or completed status.\nExcludes transactions still in an internal status (`created`, `claimed`).","operationId":"get_transactions","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"accountId","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Uuid"}}],"responses":{"200":{"description":"Transactions retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GetTransactionResponse"}}}}},"400":{"description":"Bad request - Invalid account_id"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-transaction":{"get":{"tags":["Transactions"],"summary":"Get single transaction","description":"Transactions still awaiting signature (unsigned drafts) return 404: they only become\nvisible once `sign-payload` has succeeded.","operationId":"get_transaction","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"transactionId","in":"query","required":true,"schema":{"$ref":"#/components/schemas/Uuid"}}],"responses":{"200":{"description":"Transaction retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTransactionResponse"}}}},"404":{"description":"Transaction not found, or still awaiting signature"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-all-transactions":{"get":{"tags":["Transactions"],"summary":"List all transactions across every account of the authenticated integrator","description":"Returns transactions across all accounts owned by the integrator, paginated and ordered (DESC by default).\nExcludes transactions still in an internal status (`created`, `claimed`).","operationId":"get_all_transactions","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size (max 100). Defaults to 20.","required":false,"schema":{"type":"integer","format":"int64","nullable":true}},{"name":"offset","in":"query","description":"Number of records to skip. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int64","nullable":true}},{"name":"order","in":"query","description":"Sort order over the field `updatedAt`. `desc` (default) returns the most recently updated first;\n`asc` returns the oldest first. Combine with `offset` to paginate through every transaction.","required":false,"schema":{"$ref":"#/components/schemas/SortOrder"}}],"responses":{"200":{"description":"Transactions retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetAllTransactionsResponse"}}}},"400":{"description":"Bad request"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-activate-account-payload-passkey":{"post":{"tags":["Transactions"],"summary":"Get activate account payload","description":"Get the authorization to sign to activate the account with EIP 7702 allowing gas sponsorship.","operationId":"get_authorization_payload_passkey","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"chain_id","in":"query","description":"Chain ID (1 for Ethereum, 8453 for Base)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"requestBody":{"description":"Account activation request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivateAccountRequestBody"}}},"required":true},"responses":{"200":{"description":"Transaction created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyPayloadRequestResponse"}}}},"400":{"description":"Invalid chain ID"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-deposit-payload-passkey":{"post":{"tags":["Transactions"],"summary":"Get deposit payload","description":"Get the payload to sign in order to make a deposit. Part of the passkey authentication flow.","operationId":"get_deposit_payload_passkey","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"chain_id","in":"query","description":"Chain ID (1 for Ethereum, 8453 for Base)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"requestBody":{"description":"Deposit request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepositRequestBody"}}},"required":true},"responses":{"200":{"description":"Transaction created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyPayloadRequestResponse"}}}},"400":{"description":"Invalid chain ID"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-withdraw-payload-passkey":{"post":{"tags":["Transactions"],"summary":"Get withdraw payload","description":"Get the payload to sign in order to make a withdrawal. Part of the passkey authentication flow.","operationId":"get_withdraw_payload_passkey","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"chain_id","in":"query","description":"Chain ID (1 for Ethereum, 8453 for Base)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"requestBody":{"description":"Withdraw request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawRequestBody"}}},"required":true},"responses":{"200":{"description":"Transaction created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyPayloadRequestResponse"}}}},"400":{"description":"Invalid chain ID"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-cancel-withdrawal-payload-passkey":{"post":{"tags":["Transactions"],"summary":"Get cancellation payload for a withdrawal request","description":"Get the payload to sign in order to cancel a queued withdrawal. Part of the passkey authentication flow.","operationId":"get_cancel_withdrawal_payload_passkey","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"chain_id","in":"query","description":"Chain ID (1 for Ethereum, 8453 for Base)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"requestBody":{"description":"Cancel withdrawal request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelWithdrawalRequestBody"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyPayloadRequestResponse"}}}},"400":{"description":"Unknown transaction, wrong chain, or withdrawal not cancellable"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-transfer-payload-passkey":{"post":{"tags":["Transactions"],"summary":"Get transfer payload","description":"Get the payload to sign in order to transfer assets from the account's wallet to any destination wallet.\nPart of the passkey authentication flow.","operationId":"get_transfer_payload_passkey","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"chain_id","in":"query","description":"Chain ID (1 for Ethereum, 8453 for Base)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"requestBody":{"description":"Transfer request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRequestBody"}}},"required":true},"responses":{"200":{"description":"Transaction created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyPayloadRequestResponse"}}}},"400":{"description":"Invalid chain ID"}},"security":[{"integrator_auth":[]}]}},"/v1/query/get-vault-upgrade-payload-passkey":{"post":{"tags":["Transactions"],"summary":"Get vault upgrade payload (Base -> Ethereum)","description":"Returns two raw payloads to sign with one passkey prompt: a withdraw from the Base vault\nand a deposit on the destination Ethereum vault. The destination vault address is\nderived from a static mapping on the source vault address.","operationId":"get_vault_upgrade_payload_passkey","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Request body containing the account ID and source vault address (on Base).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VaultUpgradeRequestBody"}}},"required":true},"responses":{"200":{"description":"Payloads to sign created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VaultUpgradePayloadResponse"}}}},"400":{"description":"Invalid request (unmapped vault, zero shares, async vault, pending upgrade, ...)"},"401":{"description":"Unauthorized (account not belonging to integrator or not Atlas-delegated)"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/sign-payload-passkey":{"post":{"tags":["Transactions"],"summary":"Sign payload","description":"Sign a payload allowing Byzantine to make, execute and sponsor the transaction.","operationId":"sign_payload_passkey","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"chain_id","in":"query","description":"Chain ID (1 for Ethereum, 8453 for Base)","required":true,"schema":{"type":"integer","format":"int32","minimum":0}}],"requestBody":{"description":"The payload body details signed by the user - passkey auth","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignPayloadRequestBodyPasskey"}}},"required":true},"responses":{"200":{"description":"Transaction sent successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendTransactionResponseBody"}}}},"202":{"description":"Withdrawal initiated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendTransactionResponseBody"}}}},"400":{"description":"Invalid chain ID"}},"security":[{"integrator_auth":[]}]}},"/v1/query/events":{"get":{"tags":["Events"],"summary":"Lists persisted lifecycle events owned by the authenticated integrator, newest first.","operationId":"list_events","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"accountId","in":"query","description":"Filter by account ID.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}},{"name":"userId","in":"query","description":"Filter by user ID.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}},{"name":"transactionId","in":"query","description":"Filter by transaction ID.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}},{"name":"eventType","in":"query","description":"Filter by a lifecycle event type. `webhook.test` is not a lifecycle event.","required":false,"schema":{"type":"string","nullable":true}},{"name":"createdAfter","in":"query","description":"Exclusive lower bound on database creation time.","required":false,"schema":{"type":"string","format":"date-time","nullable":true}},{"name":"createdBefore","in":"query","description":"Exclusive upper bound on database creation time.","required":false,"schema":{"type":"string","format":"date-time","nullable":true}},{"name":"cursor","in":"query","description":"Opaque page cursor. Keep filters unchanged while paging.","required":false,"schema":{"type":"string","nullable":true}},{"name":"limit","in":"query","description":"Page size from 1 to 250. Defaults to 100.","required":false,"schema":{"type":"integer","format":"int64","nullable":true}}],"responses":{"200":{"description":"Event history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEventsResponse"}}}},"400":{"description":"Bad request - Invalid filter, cursor or limit"},"401":{"description":"Unauthorized - Invalid credential or signature"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/init-otp":{"post":{"tags":["OTP authentication"],"summary":"Step 1 Initialize OTP (send email)","operationId":"init_otp","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Initialize OTP authentication by email","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitOtpRequest"}}},"required":true},"responses":{"200":{"description":"OTP initialized successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitOtpResponse"}}}},"400":{"description":"Invalid request payload"},"404":{"description":"Account or user not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/otp-auth":{"post":{"tags":["OTP authentication"],"summary":"Step 2 Authenticate with OTP code","description":"Returns a session ID that can be used to submit an authenticated action.","operationId":"otp_auth","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Authenticate with OTP code","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpAuthRequestBody"}}},"required":true},"responses":{"200":{"description":"OTP authentication successful","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpAuthResponse"}}}},"400":{"description":"Invalid OTP code or request payload"},"404":{"description":"Account or user not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/submit/create-authenticators-otp":{"post":{"tags":["OTP authentication"],"summary":"Step 3 Create passkeys (OTP auth)","description":"Adds passkeys to a user's account by authenticating with a previously established OTP session.","operationId":"create_authenticators_otp","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Create authenticators using OTP session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAuthenticatorsOtpRequest"}}},"required":true},"responses":{"200":{"description":"Authenticators created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAuthenticatorsOtpResponse"}}}},"400":{"description":"Invalid request payload or session expired"},"404":{"description":"Account, user, or session not found"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/webhooks/subscriptions":{"post":{"tags":["Webhooks"],"summary":"Create a webhook subscription.","description":"Registers an integrator-owned webhook endpoint, validates its HTTPS/DNS safety metadata,\ncreates an active P-256 signing key, and returns the public verification key for future deliveries.","operationId":"create_subscription","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookSubscriptionRequest"}}},"required":true},"responses":{"201":{"description":"Webhook subscription created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubscriptionResponse"}}}},"400":{"description":"Invalid webhook subscription","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"integrator_auth":[]}]},"get":{"tags":["Webhooks"],"summary":"List webhook subscriptions.","description":"Returns all webhook subscriptions owned by the authenticated integrator, including each\nsubscription's active public signing key.","operationId":"list_subscriptions","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Webhook subscriptions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhookSubscriptionsResponse"}}}}},"security":[{"integrator_auth":[]}]}},"/v1/webhooks/subscriptions/{subscription_id}":{"patch":{"tags":["Webhooks"],"summary":"Update a webhook subscription.","description":"Updates an integrator-owned webhook subscription. URL changes are revalidated for endpoint\nsafety before being persisted.","operationId":"update_subscription","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookSubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Webhook subscription updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSubscriptionResponse"}}}},"400":{"description":"Invalid webhook subscription patch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Webhook subscription not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"integrator_auth":[]}]},"delete":{"tags":["Webhooks"],"summary":"Delete a webhook subscription.","description":"Deletes a webhook subscription owned by the authenticated integrator and cascades its webhook\ndelivery records according to the database outbox schema.","operationId":"delete_subscription","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Webhook subscription deleted"}},"security":[{"integrator_auth":[]}]}},"/v1/webhooks/subscriptions/{subscription_id}/test":{"post":{"tags":["Webhooks"],"summary":"Send a signed test webhook.","description":"Creates a durable `webhook.test` event and delivery record, signs the exact outbound JSON body\nwith the subscription's active P-256 key, and attempts delivery to the configured endpoint.","operationId":"send_test_delivery","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Signed test webhook delivery attempted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestWebhookDeliveryResponse"}}}},"404":{"description":"Webhook subscription not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"integrator_auth":[]}]}},"/v1/webhooks/deliveries":{"get":{"tags":["Webhooks"],"summary":"List webhook delivery history.","description":"Returns recent webhook delivery records for the authenticated integrator with their source event\npayloads and recorded delivery attempts.","operationId":"list_deliveries","parameters":[{"name":"limit","in":"query","description":"Page size for delivery history. Defaults to 100 and is capped at 250.","required":false,"schema":{"type":"integer","format":"int64","nullable":true}},{"name":"offset","in":"query","description":"Number of delivery records to skip. Defaults to 0.","required":false,"schema":{"type":"integer","format":"int64","nullable":true}},{"name":"includeAttempts","in":"query","description":"Include delivery attempt records for each delivery. Defaults to true for backwards compatibility; set false for lighter list views.","required":false,"schema":{"type":"boolean","nullable":true}},{"name":"subscriptionId","in":"query","description":"Restrict to one webhook subscription.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}},{"name":"eventId","in":"query","description":"Restrict to one webhook event row.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}},{"name":"eventType","in":"query","description":"Restrict to one public event type, e.g. `customer.active` or `webhook.test`.","required":false,"schema":{"type":"string","nullable":true}},{"name":"status","in":"query","description":"Restrict to one delivery status, e.g. `failed` or `terminal_failed`.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/WebhookDeliveryStatus"}],"nullable":true}},{"name":"sourceType","in":"query","description":"Restrict to source type. Known values include `bridge`, `sumsub`, and `customer_api`; future sources are exact-match strings.","required":false,"schema":{"type":"string","nullable":true}},{"name":"sourceId","in":"query","description":"Restrict to the durable event source id.","required":false,"schema":{"type":"string","nullable":true}},{"name":"accountId","in":"query","description":"Restrict to lifecycle events related to one account id.","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}},{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Webhook delivery history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWebhookDeliveriesResponse"}}}}},"security":[{"integrator_auth":[]}]}},"/v1/webhooks/deliveries/{delivery_id}/retry":{"post":{"tags":["Webhooks"],"summary":"Retry a webhook delivery.","description":"Manually retries a retryable webhook delivery owned by the authenticated integrator. Disabled\nsubscriptions and terminal, succeeded, or in-flight deliveries are rejected.","operationId":"retry_delivery","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Webhook manual retry attempted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestWebhookDeliveryResponse"}}}},"404":{"description":"Webhook delivery not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"integrator_auth":[]}]}},"/v1/integrator/whoami":{"get":{"tags":["Integrator key management"],"summary":"Get current integrator credential capabilities","description":"Returns the authenticated integrator id, credential access scope, label, and capability flags for frontend UX.","operationId":"get_current_integrator_capabilities","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current integrator credential capabilities","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrentIntegratorResponse"}}}},"400":{"description":"Bad request - Missing or invalid auth headers"},"401":{"description":"Unauthorized - Invalid credential or signature"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/integrator/credentials":{"get":{"tags":["Integrator key management"],"summary":"List integrator credentials","description":"Returns every credential owned by the authenticated integrator, oldest first: public key,\naccess scope, active status, label, and creation time. Private keys are returned only in the\ncreation response and are not stored by the API, so they never appear in this list.","operationId":"list_credentials","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Credentials owned by the authenticated integrator","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCredentialsResponse"}}}},"400":{"description":"Bad request - Missing or invalid auth headers"},"401":{"description":"Unauthorized - Invalid credential or signature"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]},"post":{"tags":["Integrator key management"],"summary":"Issue a credential for the authenticated integrator","description":"Generates a new credential keypair and stores the public key as an active credential with the\nrequested access scope (`read_only` by default). The private key is returned only in this\ncreation response and is not stored by the API. Requires a read-write credential.","operationId":"create_credential","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCredentialPayload"}}},"required":true},"responses":{"201":{"description":"Credential issued successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCredentialResponse"}}}},"401":{"description":"Unauthorized - Invalid credential or signature"},"403":{"description":"Forbidden - Read-only credentials cannot issue credentials"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}},"/v1/integrator/credentials/{pubkey}":{"patch":{"tags":["Integrator key management"],"summary":"Update a credential","description":"Partially updates a credential owned by the authenticated integrator: `label`, `active`, and\n`accessScope` can each be changed independently; omitted fields are left untouched. The\ncredential signing the current request can only change its own label, not its own `active`\nstatus or access scope, so an integrator always keeps one working read-write credential.\nRequires a read-write credential.","operationId":"update_credential","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"pubkey","in":"path","description":"Public key of the credential","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCredentialPayload"}}},"required":true},"responses":{"200":{"description":"Credential updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialSummaryResponse"}}}},"400":{"description":"Bad request - Empty update or credential demoting/deactivating itself"},"401":{"description":"Unauthorized - Invalid credential or signature"},"403":{"description":"Forbidden - Read-only credentials cannot edit credentials"},"404":{"description":"Credential not found for this integrator"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]},"delete":{"tags":["Integrator key management"],"summary":"Delete an integrator credential","description":"Permanently removes a credential owned by the authenticated integrator; the associated public\nkey stops authenticating immediately. The credential signing the current request cannot delete\nitself, so an integrator always keeps at least one working read-write credential.\nRequires a read-write credential.","operationId":"delete_credential","parameters":[{"name":"X-Pubkey","in":"header","description":"Integrator's ECDSA public key (P-256 curve, compressed SEC1 format). Example: 0x038fedef7c12f93bbf342ad8943b7a825a3b41f61c9dc118b2c718efebabbf62fd","required":true,"schema":{"type":"string"}},{"name":"X-Timestamp","in":"header","description":"Unix timestamp in seconds (UTC). Must be within tolerance window (1 minute) to prevent replay attacks. Example: 1760375826","required":true,"schema":{"type":"string"}},{"name":"X-Signature","in":"header","description":"ECDSA signature (DER-encoded, hex with 0x prefix). Signs the message: `{timestamp}{METHOD}{path_and_query}{json_body}`. Example: 0x3045022100...","required":true,"schema":{"type":"string"}},{"name":"pubkey","in":"path","description":"Public key of the credential","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Credential deleted"},"400":{"description":"Bad request - A credential cannot delete itself"},"401":{"description":"Unauthorized - Invalid credential or signature"},"403":{"description":"Forbidden - Read-only credentials cannot delete credentials"},"404":{"description":"Credential not found for this integrator"},"500":{"description":"Internal server error"}},"security":[{"integrator_auth":[]}]}}},"components":{"schemas":{"AccountMinimalView":{"type":"object","description":"Minimal data of an account","required":["accountName"],"properties":{"accountName":{"type":"string"},"entityId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"ownerUserId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"imageUrl":{"type":"string","nullable":true}}},"AccountUserRole":{"type":"string","description":"Role of a user in an account.","enum":["root","admin","view","self_custodial","beneficiary"],"example":"root"},"AchAccountPayload":{"type":"object","required":["bankName","accountNumber","routingNumber","checkingOrSavings"],"properties":{"bankName":{"type":"string"},"accountNumber":{"type":"string"},"routingNumber":{"type":"string"},"checkingOrSavings":{"$ref":"#/components/schemas/CheckingOrSavings"}}},"ActivateAccountRequestBody":{"type":"object","required":["accountId"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"}}},"ActivityInfo":{"type":"object","description":"Business activity details. Short business description and [industry code](https://docs.byzantine.fi/api-reference/lists/industry-codes#company-industry-codes)","required":["businessDescription","businessIndustry"],"properties":{"businessDescription":{"type":"string","example":"ByzCorp does business.","maxLength":1024,"minLength":1},"businessIndustry":{"type":"integer","format":"int64","example":523110,"minimum":0}}},"AddAssociatedPersonRequest":{"type":"object","description":"Request body for adding an associated person to an entity account.","required":["accountId","associatedPerson"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"associatedPerson":{"$ref":"#/components/schemas/AssociatedPerson"}}},"AddBankAccountRequest":{"type":"object","required":["accountId","currency","label"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"currency":{"$ref":"#/components/schemas/Currency"},"label":{"type":"string"},"achBankAccountDetails":{"allOf":[{"$ref":"#/components/schemas/AchAccountPayload"}],"nullable":true},"ibanBankAccountDetails":{"allOf":[{"$ref":"#/components/schemas/IbanAccountPayload"}],"nullable":true}}},"AddBankAccountResponse":{"allOf":[{"$ref":"#/components/schemas/LiquidationAddress"},{"type":"object"}]},"AdditionalUserInfo":{"type":"object","description":"Additional user information for KYC. All fields are required when provided.","required":["employmentStatus","expectedMonthlyPaymentsUsd","sourceOfFunds","mostRecentOccupation"],"properties":{"employmentStatus":{"$ref":"#/components/schemas/EmploymentStatus"},"expectedMonthlyPaymentsUsd":{"$ref":"#/components/schemas/ExpectedMonthlyPayments"},"sourceOfFunds":{"$ref":"#/components/schemas/UserSourceOfFunds"},"mostRecentOccupation":{"type":"string","description":"Must be a valid six-digit occupation code. See the full list of [occupation codes](https://docs.byzantine.fi/api-reference/lists/occupation-codes).","example":"151252","maxLength":6,"minLength":6}}},"Address":{"type":"object","description":"Address information. Must be a valid address in the relevant country.","required":["streetLine1","city","postalCode","country"],"properties":{"streetLine1":{"type":"string","example":"33 Rue La Fayette"},"streetLine2":{"type":"string","description":"Optional additional details to the street name and number.","example":"WeWork","nullable":true},"city":{"type":"string","example":"Paris"},"state":{"type":"string","description":"Required for US addresses. Should be a valid ISO 3166-2 subdivision code.","example":"IDF","nullable":true},"postalCode":{"type":"string","description":"Postal code.","example":"75009"},"country":{"$ref":"#/components/schemas/CountryCode"}}},"ApiKeyParam":{"type":"object","description":"API key object. If set, temporary authentication method until the user adds a passkey.","required":["apiKeyName","publicKey","curveType"],"properties":{"apiKeyName":{"type":"string","description":"Human-readable name for the API key.","example":"Byzantine API Key"},"publicKey":{"type":"string","description":"The public key of the API key.","example":"c51b102585622c59715784828c579278d5360159cd214fc976f5ce537c41872231"},"curveType":{"type":"string","description":"The curve type of encryption algorithm.","example":"API_KEY_CURVE_P256"},"expirationSeconds":{"type":"string","description":"Optional window (in seconds) indicating how long the API Key should last.","example":"3600","nullable":true}}},"ApplicantType":{"type":"string","description":"Type of applicant for Sumsub verification","enum":["individual","company"]},"ApyQueryParams":{"type":"object","properties":{"period":{"type":"string","nullable":true}}},"ApyResponse":{"type":"object","required":["vault_id","latest_share_price","calculated_at"],"properties":{"vault_id":{"type":"string"},"daily_apy":{"type":"number","format":"double","nullable":true},"weekly_apy":{"type":"number","format":"double","nullable":true},"monthly_apy":{"type":"number","format":"double","nullable":true},"yearly_apy":{"type":"number","format":"double","nullable":true},"daily_period_days":{"type":"integer","format":"int32","nullable":true},"weekly_period_days":{"type":"integer","format":"int32","nullable":true},"monthly_period_days":{"type":"integer","format":"int32","nullable":true},"yearly_period_days":{"type":"integer","format":"int32","nullable":true},"latest_share_price":{"$ref":"#/components/schemas/BigDecimal"},"calculated_at":{"type":"string","format":"date-time"}}},"Asset":{"type":"object","required":["address","name","symbol","decimals","image_url","approx_price","category","chain_id"],"properties":{"address":{"type":"string","description":"Token contract address"},"name":{"type":"string","description":"Token name"},"symbol":{"type":"string","description":"Token symbol"},"decimals":{"type":"integer","format":"int32","description":"Token decimals"},"image_url":{"type":"string","description":"Token image URL"},"approx_price":{"type":"number","format":"double","description":"Approximate price in USD"},"category":{"type":"string","description":"Token category (e.g., \"lst\", \"eth\", \"bitcoin\")"},"chain_id":{"type":"integer","format":"int32","description":"Chain ID"}}},"AssociatedPerson":{"type":"object","description":"Associated person (beneficiary or representative).","required":["userInfo","beneficiaryDetails"],"properties":{"userInfo":{"$ref":"#/components/schemas/UserInfo"},"beneficiaryDetails":{"$ref":"#/components/schemas/BeneficiaryDetails"},"verificationDocuments":{"type":"array","items":{"$ref":"#/components/schemas/UserVerificationDocument"},"nullable":true}}},"AssociatedPersonDetailsQuery":{"type":"object","description":"Query parameters for getting a single associated person","required":["beneficiaryId"],"properties":{"beneficiaryId":{"$ref":"#/components/schemas/Uuid"}}},"AssociatedPersonResponse":{"type":"object","description":"Response body for an associated person","required":["beneficiaryId","verificationStatus","userInfo","beneficiaryDetails"],"properties":{"beneficiaryId":{"$ref":"#/components/schemas/Uuid"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"userInfo":{"$ref":"#/components/schemas/UserInfo"},"beneficiaryDetails":{"$ref":"#/components/schemas/BeneficiaryDetails"},"verificationDocuments":{"type":"array","items":{"$ref":"#/components/schemas/VerificationDocumentResponse"},"nullable":true},"missingDocuments":{"type":"array","items":{"type":"string"},"description":"List of missing required verification documents. Present only if not all required documents have been submitted.","nullable":true}}},"Attestation":{"type":"object","required":["credentialId","clientDataJson","attestationObject","transports"],"properties":{"credentialId":{"type":"string","description":"The cbor encoded then base64 url encoded id of the credential."},"clientDataJson":{"type":"string","description":"A base64 url encoded payload containing metadata about the signing context and the challenge."},"attestationObject":{"type":"string","description":"A base64 url encoded payload containing authenticator data and any attestation the webauthn provider chooses."},"transports":{"type":"array","items":{"$ref":"#/components/schemas/Transports"}}}},"AuthenticatorParam":{"type":"object","description":"Passkey authenticator object.","required":["authenticatorName","challenge","attestation"],"properties":{"authenticatorName":{"type":"string","description":"Human-readable name for an Authenticator."},"challenge":{"type":"string","description":"Challenge presented for authentication purposes."},"attestation":{"$ref":"#/components/schemas/Attestation"}}},"AuthenticatorView":{"type":"object","description":"`WebAuthn` authenticator registered on an account","required":["credentialId","createdAt"],"properties":{"credentialId":{"type":"string","description":"The raw base64url id to use in `allowCredentials` for signing ceremonies."},"name":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"BankAccount":{"oneOf":[{"$ref":"#/components/schemas/BridgeGetIbanAccountDetails"},{"$ref":"#/components/schemas/BridgeGetAchAccountDetails"}],"description":"Bank account details where the funds will be transferred to (withdrawals only)."},"BankAccountWrapper":{"allOf":[{"$ref":"#/components/schemas/BankAccount"},{"type":"object","required":["objectId"],"properties":{"objectId":{"$ref":"#/components/schemas/Uuid"}}}]},"BeneficiaryDetails":{"type":"object","description":"Additional details about beneficiaries.","required":["beneficiaryType"],"properties":{"beneficiaryType":{"type":"array","items":{"$ref":"#/components/schemas/BeneficiaryType"}},"title":{"type":"string","description":"Required for representatives. The title held at the business.","example":"CEO","nullable":true},"ownershipPercentage":{"type":"number","format":"double","description":"Required for UBOs. The % of direct or indirect business ownership.","example":32.5,"nullable":true}}},"BeneficiarySummary":{"type":"object","description":"`data.beneficiary`: the UBO a beneficiary-scoped `customer.*` event is about.","required":["beneficiaryId","firstName","lastName","verificationStatus"],"properties":{"beneficiaryId":{"$ref":"#/components/schemas/Uuid"},"firstName":{"type":"string"},"lastName":{"type":"string"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"}}},"BeneficiaryType":{"type":"string","description":"Beneficiary type.\n\nUBOs are any individuals who, directly or inderectly, own more than 25% of the business.\n\nRepresentatives are individuals who have direct control over daily operations.","enum":["ubo","representative"],"example":"ubo"},"BigDecimal":{"type":"string","description":"A decimal number represented as a string","example":"1000.00"},"BridgeGetAchAccountDetails":{"type":"object","description":"ACH bank account informations","required":["routingNumber","last4"],"properties":{"routingNumber":{"type":"string","description":"The bank routing number.","example":"121000248"},"last4":{"type":"string","description":"Last 4 digits of the bank account number.","example":"1111"},"checkingOrSavings":{"allOf":[{"$ref":"#/components/schemas/CheckingOrSavings"}],"nullable":true}}},"BridgeGetIbanAccountDetails":{"type":"object","description":"IBAN bank account informations","required":["country","last4"],"properties":{"country":{"type":"string","description":"The ISO 3166-1 (three-character) country code of the relevant country. See the full list of [countries](https://docs.byzantine.fi/api-reference/lists/countries).","example":"FRA"},"last4":{"type":"string","description":"Last 4 digits of the bank account number","example":"0804"},"bic":{"type":"string","description":"The Bank Identifier Code (BIC) that will be used to send the funds","example":"BICFR12345","nullable":true}}},"BusinessCustomer":{"type":"object","description":"A business customer (entity) with its team members","required":["entityId","entityName","verificationStatus","createdAt","updatedAt","teamMembers"],"properties":{"entityId":{"$ref":"#/components/schemas/Uuid"},"entityName":{"type":"string"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"logoUrl":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"teamMembers":{"type":"array","items":{"$ref":"#/components/schemas/EntityMember"}}}},"BusinessType":{"type":"string","description":"Business legal form. Select that most appropriate one fitting your jurisdiction.","enum":["cooperative","corporation","llc","other","partnership","sole_prop","trust"],"example":"llc"},"CancelWithdrawalRequestBody":{"type":"object","required":["transactionId"],"properties":{"transactionId":{"$ref":"#/components/schemas/Uuid"}}},"CheckingOrSavings":{"type":"string","enum":["checking","savings","unknown"]},"CountryCode":{"type":"string","description":"The ISO 3166-1 (three-character) country code of the relevant country. See the full list of [countries](https://docs.byzantine.fi/api-reference/lists/countries).","enum":["ABW","AFG","AGO","ALB","AND","ARG","ARM","AUS","AUT","AZE","BEL","BGD","BGR","BHR","BHS","BIH","BLZ","BMU","BOL","BRA","BRB","BWA","CAN","CHL","CHN","CIV","CMR","COL","COM","CRI","CUW","CXR","CYM","CYP","CZE","DEU","DMA","DNK","DOM","DZA","ECU","EGY","ESP","EST","ETH","FIN","FJI","FRA","GBR","GEO","GHA","GIB","GRC","GTM","HKG","HND","HRV","HTI","HUN","IDN","IMN","IND","IRL","IRQ","ISL","ISR","ITA","JAM","JOR","JPN","KAZ","KEN","KGZ","KHM","KNA","KOR","KWT","LAO","LBN","LBR","LCA","LKA","LTU","LUX","LVA","MAR","MCO","MDA","MDG","MEX","MHL","MKD","MLT","MNE","MOZ","MRT","MUS","MWI","MYS","NAM","NGA","NIC","NLD","NOR","NPL","NZL","OMN","PAN","PER","PHL","PAK","POL","PRT","QAT","ROU","RUS","SAU","SEN","SGP","SMR","SVK","SVN","ZAF","SWE","CHE","THA","TUN","TUR","UGA","UKR","ARE","USA","URY","UZB","VEN","VNM","YEM","ZMB","ZWE"],"example":"FRA"},"CreateAuthenticatorsOtpRequest":{"type":"object","description":"Request to create authenticators (passkeys) using an OTP session","required":["sessionId","accountId","userId","authenticators"],"properties":{"sessionId":{"$ref":"#/components/schemas/Uuid"},"accountId":{"$ref":"#/components/schemas/Uuid"},"userId":{"$ref":"#/components/schemas/Uuid"},"authenticators":{"type":"array","items":{"$ref":"#/components/schemas/AuthenticatorParam"},"description":"List of authenticators (passkeys) to create"}}},"CreateAuthenticatorsOtpResponse":{"type":"object","description":"Response from creating authenticators (passkeys)","required":["authenticatorIds"],"properties":{"authenticatorIds":{"type":"array","items":{"type":"string"},"description":"List of created authenticator IDs"}}},"CreateCredentialPayload":{"type":"object","properties":{"accessScope":{"$ref":"#/components/schemas/IntegratorAccessScope"},"label":{"type":"string","description":"Optional label for the new credential.","nullable":true}}},"CreateCredentialResponse":{"type":"object","required":["pubkey","privateKey","integratorId","accessScope","active"],"properties":{"pubkey":{"type":"string","description":"Public key identifying the newly issued credential."},"privateKey":{"type":"string","description":"Private key for the newly issued credential. Returned only at creation time."},"integratorId":{"$ref":"#/components/schemas/Uuid"},"accessScope":{"$ref":"#/components/schemas/IntegratorAccessScope"},"active":{"type":"boolean","description":"Whether the credential is active immediately after creation."},"label":{"type":"string","description":"Label of the credential.","nullable":true}}},"CreateEntityAccountRequest":{"type":"object","description":"Request body for creating a Byzantine entity","required":["entityInfo","rootUsers","byzantineTermsSignedAt"],"properties":{"entityInfo":{"$ref":"#/components/schemas/EntityInfo"},"entityDocuments":{"type":"array","items":{"$ref":"#/components/schemas/EntityVerificationDocument"},"description":"Entity verification documents. The verification check is only requested once the four required\ngroups are covered: company details, ownership structure, source of funds and proof of address.\nSee [accepted documents](https://docs.byzantine.fi/api-reference/documents).","nullable":true},"rootUsers":{"type":"array","items":{"$ref":"#/components/schemas/EntityRootUserRequest"}},"associatedPersons":{"type":"array","items":{"$ref":"#/components/schemas/AssociatedPerson"},"nullable":true},"walletAddress":{"type":"string","description":"Optional wallet address for self-custodial accounts. If provided, no Turnkey sub-organization will be created and `required_approvals` will be set to 0.","example":"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18","nullable":true},"byzantineTermsSignedAt":{"type":"string","description":"The timestamp when the Byzantine Finance Terms & Conditions were signed. For more information, see [individual account creation - KYC](https://docs.byzantine.fi/api-reference/kyc).","example":"2025-11-19T21:14:58.328Z"}}},"CreateEntityAccountResponse":{"type":"object","description":"Response body for creating a Byzantine entity","required":["entityId","accountId","verificationStatus","entityInfo","rootUsers","walletAddress","byzantineTermsSignedAt"],"properties":{"entityId":{"$ref":"#/components/schemas/Uuid"},"accountId":{"$ref":"#/components/schemas/Uuid"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"entityInfo":{"$ref":"#/components/schemas/EntityInfo"},"entityDocuments":{"type":"array","items":{"$ref":"#/components/schemas/VerificationDocumentResponse"},"nullable":true},"rootUsers":{"type":"array","items":{"$ref":"#/components/schemas/EntityRootUserResponse"}},"associatedPersons":{"type":"array","items":{"$ref":"#/components/schemas/AssociatedPersonResponse"},"nullable":true},"walletAddress":{"type":"string","description":"The wallet address associated with this account.","example":"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18"},"byzantineTermsSignedAt":{"type":"string","description":"The timestamp when the Byzantine Finance Terms & Conditions were signed. For more information, see [individual account creation - KYC](https://docs.byzantine.fi/api-reference/kyc).","example":"2025-11-19T21:14:58.328Z"},"missingCompanyData":{"type":"array","items":{"type":"string"},"description":"List of missing required company data. Present only if not all required company information has been provided.","nullable":true},"missingDocuments":{"type":"array","items":{"type":"string"},"description":"List of missing required entity verification documents. Present only if not all required documents have been submitted.\nValues: `COMPANY_DETAILS_DOCUMENT`, `OWNERSHIP_STRUCTURE_DOCUMENT`, `SOURCE_OF_FUNDS_DOCUMENT`,\n`PROOF_OF_ADDRESS_DOCUMENT`, `PHYSICAL_ADDRESS_QUESTIONNAIRE`, `ACTIVITY_INFO_QUESTIONNAIRE`,\n`FINANCIAL_INFO_QUESTIONNAIRE`.","nullable":true}}},"CreateIndividualAccountRequest":{"type":"object","description":"User to be created. The vast majority of fields are required in order to complete the identity verification process.","required":["userInfo","byzantineTermsSignedAt","rootUsers"],"properties":{"userInfo":{"$ref":"#/components/schemas/UserInfo"},"additionalUserInfo":{"allOf":[{"$ref":"#/components/schemas/AdditionalUserInfo"}],"nullable":true},"verificationDocuments":{"type":"array","items":{"$ref":"#/components/schemas/UserVerificationDocument"},"nullable":true},"byzantineTermsSignedAt":{"type":"string","description":"The timestamp when the Byzantine Finance Terms & Conditions were signed. For more information, see [individual account creation - KYC](https://docs.byzantine.fi/api-reference/kyc).","example":"2025-11-19T21:14:58.328Z"},"walletAddress":{"type":"string","description":"Optional wallet address for self-custodial accounts. If provided, no Turnkey sub-organization will be created and `required_approvals` will be set to 0.","example":"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18","nullable":true},"rootUsers":{"type":"array","items":{"$ref":"#/components/schemas/IndividualRootUserRequest"}}}},"CreateIndividualAccountResponse":{"type":"object","description":"Response body for creating a Byzantine user","required":["userId","accountId","verificationStatus","userInfo","walletAddress","byzantineTermsSignedAt","rootUsers"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"accountId":{"$ref":"#/components/schemas/Uuid"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"userInfo":{"$ref":"#/components/schemas/UserInfo"},"additionalUserInfo":{"allOf":[{"$ref":"#/components/schemas/AdditionalUserInfo"}],"nullable":true},"verificationDocuments":{"type":"array","items":{"$ref":"#/components/schemas/VerificationDocumentResponse"},"nullable":true},"walletAddress":{"type":"string","description":"The wallet address associated with this account.","example":"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18"},"byzantineTermsSignedAt":{"type":"string","description":"The timestamp when the Byzantine Finance Terms & Conditions were signed. For more information, see [individual account creation - KYC](https://docs.byzantine.fi/api-reference/kyc).","example":"2025-11-19T21:14:58.328Z"},"missingDocuments":{"type":"array","items":{"type":"string"},"description":"List of missing required verification documents. Present only if not all required documents have been submitted.","nullable":true},"rootUsers":{"type":"array","items":{"$ref":"#/components/schemas/IndividualRootUserResponse"}}}},"CreateUserParam":{"type":"object","description":"The parameters object containing the specific informations about the new user to be added.","required":["userName","userEmail","apiKeys","authenticators","oauthProviders","userTags"],"properties":{"userName":{"type":"string","description":"The name of the new user.","example":"John Doe"},"userEmail":{"type":"string","description":"The email of the new user.","example":"john.doe@example.com"},"apiKeys":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyParam"}},"authenticators":{"type":"array","items":{"$ref":"#/components/schemas/AuthenticatorParam"}},"oauthProviders":{"type":"array","items":{"$ref":"#/components/schemas/OAuthProviderParam"}},"userTags":{"type":"array","items":{"type":"string"},"description":"A list of tag IDs to add to the user."}}},"CreateUsersParams":{"type":"object","description":"The list of new users to be added.","required":["users"],"properties":{"users":{"type":"array","items":{"$ref":"#/components/schemas/CreateUserParam"}}}},"CreateUsersRequest":{"type":"object","description":"The object that needs to be signed by the end user to invite a new user to a Byzantine account.","required":["type","timestampMs","organizationId","parameters"],"properties":{"type":{"type":"string","description":"Defaults to `ACTIVITY_TYPE_CREATE_USERS_V3`","example":"ACTIVITY_TYPE_CREATE_USERS_V3"},"timestampMs":{"type":"string","description":"UNIX timestamp of the creation of the request."},"organizationId":{"type":"string","description":"The account ID adding the new user.","example":"d107c1e1-766a-4091-802c-de61a3973e91"},"parameters":{"$ref":"#/components/schemas/CreateUsersParams"}}},"CreateWebhookSubscriptionRequest":{"type":"object","required":["url"],"properties":{"url":{"type":"string"},"name":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"eventTypes":{"type":"array","items":{"type":"string"}},"httpHeaders":{"type":"object","description":"Optional custom HTTP headers sent with every delivery (max 16, 8 KiB total).\nOmit or pass null/{} for no custom headers.\nNames are case-insensitive; transport and Byzantine signature headers are reserved.","additionalProperties":{"type":"string"},"nullable":true}}},"CredentialSummaryResponse":{"type":"object","required":["pubkey","integratorId","accessScope","active","createdAt"],"properties":{"pubkey":{"type":"string","description":"Public key identifying the credential."},"integratorId":{"$ref":"#/components/schemas/Uuid"},"accessScope":{"$ref":"#/components/schemas/IntegratorAccessScope"},"active":{"type":"boolean","description":"Whether the credential is active."},"label":{"type":"string","description":"Label of the credential.","nullable":true},"createdAt":{"type":"string","format":"date-time","description":"Creation time of the credential."}}},"CryptoCurrency":{"type":"string","description":"On-chain currencies only (subset of `Currency`), for requests where fiat makes no sense.","enum":["usdc","eurc"]},"Currency":{"type":"string","enum":["usd","eur","usdc","eurc"]},"CurrentIntegratorCapabilities":{"type":"object","required":["canWrite"],"properties":{"canWrite":{"type":"boolean","description":"Whether the current credential may call mutation-capable routes.","example":true}}},"CurrentIntegratorResponse":{"type":"object","required":["integratorId","accessScope","capabilities"],"properties":{"integratorId":{"$ref":"#/components/schemas/Uuid"},"accessScope":{"$ref":"#/components/schemas/IntegratorAccessScope"},"label":{"type":"string","description":"Label of the credential used for the current request.","nullable":true},"capabilities":{"$ref":"#/components/schemas/CurrentIntegratorCapabilities"}}},"CustomerEventData":{"type":"object","description":"`data` of every `customer.*` event. `customer` is always the main customer (entity or\nindividual); `beneficiary` is set on UBO-scoped events and then carries the status the event\nis about; `reasonCodes` is set on `resubmission_requested` and `rejected`. Every key is\nalways emitted (`null` when not applicable): strict schema validators must not see keys\nappear and disappear with the event type.","required":["customer"],"properties":{"customer":{"$ref":"#/components/schemas/CustomerSummary"},"beneficiary":{"allOf":[{"$ref":"#/components/schemas/BeneficiarySummary"}],"nullable":true},"reasonCodes":{"type":"array","items":{"type":"string"},"nullable":true}}},"CustomerQueryType":{"type":"string","description":"Filter type for the get-customers endpoint","enum":["business","individual","all"]},"CustomerSummary":{"type":"object","description":"`data.customer`: canonical summary of the KYC/KYB subject (individual user or entity).","required":["accountId","customerType","name","verificationStatus","createdAt"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"customerType":{"$ref":"#/components/schemas/CustomerType"},"userId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"entityId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"name":{"type":"string","description":"`FirstName LastName` for an individual, the company name for an entity."},"email":{"type":"string","description":"The user's email for an individual, the company email declared at KYB for an entity\n(`null` when the entity declared none).","nullable":true},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"createdAt":{"type":"string","format":"date-time"}}},"CustomerType":{"type":"string","enum":["individual","entity"],"example":"entity"},"Decimal":{"type":"string","description":"A high-precision decimal number represented as a string","example":"123.456789"},"DepositRequestBody":{"type":"object","required":["accountId","vaultAddr","amount","sourceCurrency"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"vaultAddr":{"type":"string","description":"The address of the vault to deposit into.","example":"0x1234567890abcdef"},"amount":{"$ref":"#/components/schemas/Decimal"},"sourceCurrency":{"$ref":"#/components/schemas/Currency"}}},"DocumentType":{"oneOf":[{"$ref":"#/components/schemas/UserDocumentType"},{"$ref":"#/components/schemas/EntityDocumentType"}],"description":"Type of verification document."},"EmploymentStatus":{"type":"string","description":"Employment status of a user. Required for high risk users.","enum":["employed","homemaker","retired","self_employed","student","unemployed"],"example":"employed"},"EntityAccountInfo":{"type":"object","description":"Response body for entity account information","required":["accountId","accountName","accountType","walletAddress","isSelfCustodial","createdAt"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"accountName":{"type":"string"},"accountType":{"$ref":"#/components/schemas/ApplicantType"},"walletAddress":{"type":"string"},"isSelfCustodial":{"type":"boolean"},"bridgeAccountId":{"type":"string","nullable":true},"logoUrl":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"EntityDetailsQuery":{"type":"object","description":"Query parameters for getting entity details","required":["entityId"],"properties":{"entityId":{"$ref":"#/components/schemas/Uuid"}}},"EntityDocumentType":{"type":"string","description":"Entity document type. For a full list of accepted document types, see [accepted documents](https://docs.byzantine.fi/api-reference/documents).\n\nFour document groups are required before the verification check can be requested; a missing group\nis reported in `missingDocuments` with the code in brackets:\n- company details (`COMPANY_DETAILS_DOCUMENT`): `incorporation_cert`, `incorporation_articles` or `state_registry`\n- ownership structure (`OWNERSHIP_STRUCTURE_DOCUMENT`): `shareholder_registry`, `information_statement`, `trust_agreement` or `partnership_agreement`\n- source of funds (`SOURCE_OF_FUNDS_DOCUMENT`): `source_of_funds`\n- proof of address (`PROOF_OF_ADDRESS_DOCUMENT`): `proof_of_address`, a document in the entity's name proving its physical address (utility bill, lease, bank statement, ...)\n\n`directors_registry`, `good_standing_cert`, `incumbency_cert`, `power_of_attorney` and `other` are optional.","enum":["directors_registry","good_standing_cert","incorporation_articles","incorporation_cert","incumbency_cert","information_statement","partnership_agreement","power_of_attorney","proof_of_address","shareholder_registry","source_of_funds","state_registry","trust_agreement","other"],"example":"incorporation_cert"},"EntityInfo":{"type":"object","description":"Entity information for KYB","required":["businessLegalName"],"properties":{"businessLegalName":{"type":"string","description":"The legal name of the business.","example":"ByzCorp Incorporated"},"businessTradeName":{"type":"string","description":"The trade name of the business. Can be the same as the entity name.","example":"ByzCorp","nullable":true},"businessType":{"allOf":[{"$ref":"#/components/schemas/BusinessType"}],"nullable":true},"companyNumber":{"type":"string","description":"The registered business number. Depending on the country of registration, we accept these [entity number types](https://docs.byzantine.fi/api-reference/lists/company-number-types).","example":"123456789","nullable":true},"email":{"type":"string","description":"Business contact email.","example":"byzcorp@example.com","nullable":true},"website":{"type":"string","description":"Business website.","example":"byzcorp.com","nullable":true},"logoUrl":{"type":"string","description":"URL of the entity's logo.","example":"https://byzcorp.com/logo.png","nullable":true},"registeredAddress":{"allOf":[{"$ref":"#/components/schemas/Address"}],"nullable":true},"physicalAddress":{"allOf":[{"$ref":"#/components/schemas/Address"}],"nullable":true},"activityInfo":{"allOf":[{"$ref":"#/components/schemas/ActivityInfo"}],"nullable":true},"financialInfo":{"allOf":[{"$ref":"#/components/schemas/FinancialInfo"}],"nullable":true},"highRiskInfo":{"allOf":[{"$ref":"#/components/schemas/HighRiskInfo"}],"nullable":true}}},"EntityMember":{"type":"object","description":"A customer member (user or team member)","required":["userId","firstName","lastName","email"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"}}},"EntityRootUserRequest":{"type":"object","description":"Root user for acount management. At least one is required at creation.","required":["firstName","lastName","email"],"properties":{"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"Smith"},"email":{"type":"string","example":"john.smith@example.com"},"authenticators":{"type":"array","items":{"$ref":"#/components/schemas/AuthenticatorParam"},"nullable":true}}},"EntityRootUserResponse":{"type":"object","description":"Root user with wallet access","required":["userId","firstName","lastName","email","isPasskeyActivated","isOtpActivated"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"Smith"},"email":{"type":"string","example":"john.smith@example.com"},"isPasskeyActivated":{"type":"boolean","description":"An indicator showing whether passkey authentication is active for this user. For more information, see [authentication methods](https://docs.byzantine.fi/api-reference/authentication-methods).","example":true},"isOtpActivated":{"type":"boolean","description":"An indicator showing whether OTP authentication is active for this user. For more information, see [authentication methods](https://docs.byzantine.fi/api-reference/authentication-methods).","example":false}}},"EntitySourceOfFunds":{"type":"string","description":"Source of funds for entities.","enum":["business_loans","grants","inter_company_funds","investment_proceeds","legal_settlement","owners_capital","pension_retirement","sale_of_assets","sales_of_goods_and_services","tax_refund","third_party_funds","treasury_reserves"],"example":"treasury_reserves"},"EntityVerificationDocument":{"type":"object","description":"Entity verification document object. For a full list of required documents, see [accepted documents](https://docs.byzantine.fi/api-reference/documents).","required":["documentType","issuingCountry","document"],"properties":{"documentType":{"$ref":"#/components/schemas/EntityDocumentType"},"description":{"type":"string","description":"A description of the document. Must be submitted if document if os type `other`.","example":"An overview of our business activities.","nullable":true},"issuingCountry":{"$ref":"#/components/schemas/CountryCode"},"document":{"type":"string","format":"data:[MIME];base64,[base64-encoded-data]","description":"The document to be uploaded.\n\nSupported MIME types: image/jpeg, image/png, image/heic, image/tiff, application/pdf","example":"data:image/png;base64,iVBORw0lFTkSuQmCC..."}}},"ErrorResponse":{"type":"object","required":["error","status"],"properties":{"error":{"type":"string","description":"Error message","example":"Resource not found"},"status":{"type":"integer","format":"int32","description":"HTTP status code","example":404,"minimum":0}}},"EstimatedAnnualRevenue":{"type":"string","description":"Estimated annual business revenue in USD, defined as a range.","enum":["0_99999","100000_999999","1000000_9999999","10000000_49999999","50000000_249999999","250000000_plus"],"example":"1000000_9999999"},"EventHistoryItem":{"allOf":[{"$ref":"#/components/schemas/WebhookLifecycleEventPayload"},{"type":"object","required":["createdAt"],"properties":{"createdAt":{"type":"string","format":"date-time"}}}],"description":"Canonical lifecycle event payload plus its database creation time."},"ExpectedMonthlyPayments":{"type":"string","description":"Expected monthly payments in USD. Required for high risk users.","enum":["0_4999","5000_9999","10000_49999","50000_plus"],"example":"5000_9999"},"FiatCurrency":{"type":"string","enum":["usd","eur"]},"FinancialInfo":{"type":"object","description":"Financial informations, required for compliance purposes.","required":["preferredPrimaryCurrency","sourceOfFunds","estimatedAnnualRevenueUsd","expectedMonthlyPaymentsUsd","hasMaterialIntermediaryEntityOwner"],"properties":{"preferredPrimaryCurrency":{"$ref":"#/components/schemas/Currency"},"sourceOfFunds":{"$ref":"#/components/schemas/EntitySourceOfFunds"},"estimatedAnnualRevenueUsd":{"$ref":"#/components/schemas/EstimatedAnnualRevenue"},"expectedMonthlyPaymentsUsd":{"type":"integer","format":"int64","example":5000000},"hasMaterialIntermediaryEntityOwner":{"type":"boolean","example":false}}},"FxhWithdrawalStatus":{"type":"string","description":"Lifecycle status of a queued FXH withdrawal request.","enum":["pending","cancelled","settled"],"example":"pending"},"GetAccountBalanceQuery":{"type":"object","required":["accountId"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"chainId":{"type":"integer","format":"int32","description":"The chain ID to get balances for (optional, default = all chains)","example":1,"nullable":true},"includeTestVaults":{"type":"boolean","description":"Whether to include test vaults (optional, default = false)","example":true}}},"GetAccountBalancesResponse":{"type":"object","required":["account_id","sub_accounts"],"properties":{"account_id":{"$ref":"#/components/schemas/Uuid"},"sub_accounts":{"type":"array","items":{"$ref":"#/components/schemas/SubAccountBalances"},"description":"Array of account's sub-accounts and their balances"}}},"GetAccountDetailsQuery":{"type":"object","required":["accountId"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"}}},"GetAccountDetailsResponse":{"type":"object","required":["accountId","accountName","accountType","users","walletDetails","createdAt"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"accountName":{"type":"string"},"accountType":{"$ref":"#/components/schemas/ApplicantType"},"entityInfo":{"allOf":[{"$ref":"#/components/schemas/GetEntityMinimalInfo"}],"nullable":true},"accountBeneficiary":{"allOf":[{"$ref":"#/components/schemas/UserSummary"}],"nullable":true},"users":{"type":"array","items":{"$ref":"#/components/schemas/UserSummaryWithRole"}},"walletDetails":{"$ref":"#/components/schemas/GetWalletDetailsResponse"},"bankAccounts":{"type":"array","items":{"$ref":"#/components/schemas/GetBankAccountItemResponse"},"nullable":true},"imageUrl":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"GetAccountResponse":{"type":"object","description":"Response body for account information","required":["accountId","accountName","accountType","rootUsers","authenticators","userRole","walletAddress","isSelfCustodial","createdAt"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"accountName":{"type":"string"},"accountType":{"$ref":"#/components/schemas/ApplicantType"},"beneficiary":{"allOf":[{"$ref":"#/components/schemas/UserSummary"}],"nullable":true},"entityInfo":{"allOf":[{"$ref":"#/components/schemas/GetEntityMinimalInfo"}],"nullable":true},"rootUsers":{"type":"array","items":{"$ref":"#/components/schemas/UserSummary"}},"authenticators":{"type":"array","items":{"$ref":"#/components/schemas/AuthenticatorView"}},"userRole":{"$ref":"#/components/schemas/AccountUserRole"},"walletAddress":{"type":"string"},"isSelfCustodial":{"type":"boolean"},"bridgeAccountId":{"type":"string","nullable":true},"profilePictureUrl":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"GetAllInvitationsQuery":{"type":"object","properties":{"limit":{"type":"integer","format":"int64","description":"Page size (max 100). Defaults to 20.","nullable":true},"offset":{"type":"integer","format":"int64","description":"Number of records to skip. Defaults to 0.","nullable":true},"order":{"$ref":"#/components/schemas/SortOrder"}}},"GetAllInvitationsResponse":{"type":"object","required":["invitations","total","limit","offset"],"properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/GetInvitationResponse"}},"total":{"type":"integer","format":"int64","description":"Total number of invitations for this integrator across all accounts.","example":342},"limit":{"type":"integer","format":"int64","description":"Page size (max 100). Defaults to 20.","example":20},"offset":{"type":"integer","format":"int64","description":"Number of records to skip. Defaults to 0.","example":0}}},"GetAllTransactionsQuery":{"type":"object","properties":{"limit":{"type":"integer","format":"int64","description":"Page size (max 100). Defaults to 20.","nullable":true},"offset":{"type":"integer","format":"int64","description":"Number of records to skip. Defaults to 0.","nullable":true},"order":{"$ref":"#/components/schemas/SortOrder"}}},"GetAllTransactionsResponse":{"type":"object","required":["transactions","total","limit","offset"],"properties":{"transactions":{"type":"array","items":{"$ref":"#/components/schemas/TransactionView"}},"total":{"type":"integer","format":"int64","description":"Total number of active transactions for this integrator across all accounts.","example":8753},"limit":{"type":"integer","format":"int64","description":"Page size (max 100). Defaults to 20.","example":20},"offset":{"type":"integer","format":"int64","description":"Number of records to skip. Defaults to 0.","example":0}}},"GetAssociatedPersonResponse":{"type":"object","description":"Response body for an associated person","required":["firstName","lastName","email","beneficiaryType"],"properties":{"beneficiaryId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"userId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"beneficiaryType":{"type":"array","items":{"$ref":"#/components/schemas/BeneficiaryType"}},"shareSize":{"type":"number","format":"double","nullable":true}}},"GetBankAccountItemResponse":{"allOf":[{"$ref":"#/components/schemas/LiquidationAddress"},{"type":"object","required":["bankAccountDetails"],"properties":{"bankAccountDetails":{"$ref":"#/components/schemas/BankAccount"}}}]},"GetBankAccountsQuery":{"type":"object","required":["accountId"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"currency":{"allOf":[{"$ref":"#/components/schemas/Currency"}],"nullable":true}}},"GetBankAccountsResponse":{"type":"object","required":["bankAccounts"],"properties":{"bankAccounts":{"type":"array","items":{"$ref":"#/components/schemas/GetBankAccountItemResponse"}}}},"GetCustomersQuery":{"type":"object","description":"Query parameters for getting customers","properties":{"customerType":{"$ref":"#/components/schemas/CustomerQueryType"}}},"GetCustomersResponse":{"type":"object","description":"Response body for the get-customers endpoint","properties":{"businessCustomers":{"type":"array","items":{"$ref":"#/components/schemas/BusinessCustomer"},"nullable":true},"individualCustomers":{"type":"array","items":{"$ref":"#/components/schemas/IndividualCustomer"},"nullable":true}}},"GetEntityInfo":{"type":"object","description":"Response body for entity information","required":["companyName"],"properties":{"companyName":{"type":"string"},"email":{"type":"string","nullable":true},"website":{"type":"string","nullable":true},"companyNumber":{"type":"string","nullable":true},"registeredAddress":{"allOf":[{"$ref":"#/components/schemas/Address"}],"nullable":true},"physicalAddress":{"allOf":[{"$ref":"#/components/schemas/Address"}],"nullable":true}}},"GetEntityMinimalInfo":{"type":"object","description":"Response body for entity information","required":["entityId","entityName"],"properties":{"entityId":{"$ref":"#/components/schemas/Uuid"},"entityName":{"type":"string"}}},"GetEntityResponse":{"type":"object","description":"Response body for entity details","required":["entityId","verificationStatus","entityInfo","account","teamMembers","associatedPersons","createdAt"],"properties":{"entityId":{"$ref":"#/components/schemas/Uuid"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"entityInfo":{"$ref":"#/components/schemas/GetEntityInfo"},"account":{"$ref":"#/components/schemas/EntityAccountInfo"},"teamMembers":{"type":"array","items":{"$ref":"#/components/schemas/TeamMember"}},"associatedPersons":{"type":"array","items":{"$ref":"#/components/schemas/GetAssociatedPersonResponse"}},"pendingInvitations":{"type":"array","items":{"$ref":"#/components/schemas/PendingInvitation"},"nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"GetInvitationResponse":{"type":"object","required":["invitation_id","account_id","account_name","user_id","role","first_name","last_name","user_email","inviter_id","inviter_first_name","inviter_last_name","status","created_at","updated_at"],"properties":{"invitation_id":{"$ref":"#/components/schemas/Uuid"},"account_id":{"$ref":"#/components/schemas/Uuid"},"account_name":{"type":"string"},"user_id":{"$ref":"#/components/schemas/Uuid"},"role":{"$ref":"#/components/schemas/AccountUserRole"},"first_name":{"type":"string"},"last_name":{"type":"string"},"user_email":{"type":"string"},"inviter_id":{"$ref":"#/components/schemas/Uuid"},"inviter_first_name":{"type":"string"},"inviter_last_name":{"type":"string"},"status":{"$ref":"#/components/schemas/InvitationStatus"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"GetInvitationsByAccountIdQuery":{"type":"object","required":["accountId"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"}}},"GetInvitationsByEmailQuery":{"type":"object","required":["email"],"properties":{"email":{"type":"string","description":"The email to get invitations for","example":"john.doe@example.com"}}},"GetInvitationsResponse":{"type":"object","required":["invitations"],"properties":{"invitations":{"type":"array","items":{"$ref":"#/components/schemas/GetInvitationResponse"},"description":"List of invitations with user details"}}},"GetTransactionQuery":{"type":"object","required":["transactionId"],"properties":{"transactionId":{"$ref":"#/components/schemas/Uuid"}}},"GetTransactionResponse":{"allOf":[{"$ref":"#/components/schemas/TransactionView"},{"type":"object","properties":{"fiatDepositInstructions":{"allOf":[{"$ref":"#/components/schemas/SourceDepositInstructionsWrapper"}],"nullable":true},"destinationBankAccount":{"allOf":[{"$ref":"#/components/schemas/BankAccountWrapper"}],"nullable":true}}}],"description":"Response for getting a single transaction by ID"},"GetTransactionsQuery":{"type":"object","required":["accountId"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"}}},"GetUserInfo":{"type":"object","description":"Response body for user information","required":["firstName","lastName","email"],"properties":{"firstName":{"type":"string"},"middleName":{"type":"string","nullable":true},"lastName":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string","nullable":true},"birthDate":{"type":"string","example":"1990-01-01","nullable":true},"nationality":{"allOf":[{"$ref":"#/components/schemas/CountryCode"}],"nullable":true},"countryOfBirth":{"allOf":[{"$ref":"#/components/schemas/CountryCode"}],"nullable":true},"residentialAddress":{"allOf":[{"$ref":"#/components/schemas/Address"}],"nullable":true}}},"GetUserResponse":{"type":"object","description":"Response body for user details","required":["userId","verificationStatus","userInfo","accounts","createdAt"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"userInfo":{"$ref":"#/components/schemas/GetUserInfo"},"accounts":{"type":"array","items":{"$ref":"#/components/schemas/GetAccountResponse"}},"createdAt":{"type":"string","format":"date-time"}}},"GetWalletDetailsResponse":{"type":"object","required":["walletAddress","isTurnkeyWallet","isSmartAccount"],"properties":{"walletAddress":{"type":"string"},"isTurnkeyWallet":{"type":"boolean"},"isSmartAccount":{"$ref":"#/components/schemas/IsSmartAccountByChain"}}},"HealthResponse":{"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"Health status","example":"OK"}}},"HighRiskActivity":{"type":"string","description":"High risk business activities. Must be declared if the business is engaged in any.","enum":["adult_entertainment","gambling","hold_client_funds","investment_services","lending_banking","marijuana_or_related_services","money_services","nicotine_tobacco_or_related_services","operate_foreign_exchange_virtual_currencies_brokerage_otc","pharmaceuticals","precious_metals_precious_stones_jewelry","safe_deposit_box_rentals","third_party_payment_processing","weapons_firearms_and_explosives","none_of_the_above"],"example":"none_of_the_above"},"HighRiskInfo":{"type":"object","description":"High risk business activities, required for compliance purposes.","properties":{"operatesInProhibitedCountries":{"type":"boolean","example":false,"nullable":true},"highRiskActivities":{"allOf":[{"$ref":"#/components/schemas/HighRiskActivity"}],"nullable":true},"highRiskActivitiesExplanation":{"type":"string","nullable":true},"conductsMoneyServices":{"type":"boolean","example":false,"nullable":true},"conductsMoneyServicesDescription":{"type":"string","nullable":true}}},"HistoryDataPoint":{"type":"object","required":["timestamp","share_price","total_assets","hourly_apy"],"properties":{"timestamp":{"type":"string","format":"date-time"},"share_price":{"type":"number","format":"double"},"total_assets":{"type":"number","format":"double"},"hourly_apy":{"type":"number","format":"double"}}},"HistoryQueryParams":{"type":"object","properties":{"start_date":{"type":"string","format":"date-time","nullable":true},"end_date":{"type":"string","format":"date-time","nullable":true},"limit":{"type":"integer","format":"int64","nullable":true},"offset":{"type":"integer","format":"int64","nullable":true},"order":{"type":"string","nullable":true}}},"HistoryResponse":{"type":"object","required":["vault_id","data","total_count"],"properties":{"vault_id":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/HistoryDataPoint"}},"total_count":{"type":"integer","format":"int64"}}},"IbanAccountPayload":{"type":"object","required":["accountNumber","bic","country"],"properties":{"bankName":{"type":"string","nullable":true},"accountNumber":{"type":"string"},"bic":{"type":"string"},"country":{"type":"string"}}},"IdleBalance":{"type":"object","required":["chain_id","balance","currency"],"properties":{"chain_id":{"type":"integer","format":"int64","description":"Chain ID where the idle balance is held"},"balance":{"$ref":"#/components/schemas/Decimal"},"currency":{"$ref":"#/components/schemas/FiatCurrency"}}},"IndividualCustomer":{"type":"object","description":"An individual customer","required":["accountId","userId","firstName","lastName","email","verificationStatus","createdAt","updatedAt"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"userId":{"$ref":"#/components/schemas/Uuid"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"logoUrl":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"IndividualRootUserRequest":{"type":"object","description":"The root users (signers) of the account. This can be the owner themselves (same\nemail as `user_info`), or a wealth manager / CGP operating on behalf of the owner.\nAt least one is required at creation.","required":["firstName","lastName","email"],"properties":{"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"Smith"},"email":{"type":"string","example":"john.smith@example.com"},"authenticators":{"type":"array","items":{"$ref":"#/components/schemas/AuthenticatorParam"},"nullable":true}}},"IndividualRootUserResponse":{"type":"object","description":"A root user (signer) created for an individual account.","required":["userId","firstName","lastName","email","isPasskeyActivated","isOtpActivated"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"firstName":{"type":"string","example":"John"},"lastName":{"type":"string","example":"Smith"},"email":{"type":"string","example":"john.smith@example.com"},"isPasskeyActivated":{"type":"boolean","description":"An indicator showing whether passkey authentication is active for this root user. For more information, see [authentication methods](https://docs.byzantine.fi/api-reference/authentication-methods).","example":true},"isOtpActivated":{"type":"boolean","description":"An indicator showing whether OTP authentication is active for this root user. For more information, see [authentication methods](https://docs.byzantine.fi/api-reference/authentication-methods).","example":false}}},"InitOtpRequest":{"type":"object","description":"Request to initialize OTP (email) for a user","required":["accountId","userId"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"userId":{"$ref":"#/components/schemas/Uuid"}}},"InitOtpResponse":{"type":"object","description":"Response from initializing OTP","required":["otpId"],"properties":{"otpId":{"type":"string","description":"Unique identifier for the OTP request","example":"otp_a1b2c3d4567890abcdef"}}},"IntegratorAccessScope":{"type":"string","enum":["read_write","read_only"],"example":"read_write"},"InvitationStatus":{"type":"string","description":"Status of an invitation.","enum":["pending","accepted","rejected","cancelled"],"example":"pending"},"InvitationWithUserDetails":{"type":"object","description":"Invitation with user details (email and name)","required":["invitation_id","account_id","user_id","first_name","last_name","user_email","invited_by","status","created_at","updated_at"],"properties":{"invitation_id":{"$ref":"#/components/schemas/Uuid"},"account_id":{"$ref":"#/components/schemas/Uuid"},"user_id":{"$ref":"#/components/schemas/Uuid"},"first_name":{"type":"string"},"last_name":{"type":"string"},"user_email":{"type":"string"},"invited_by":{"$ref":"#/components/schemas/Uuid"},"status":{"$ref":"#/components/schemas/InvitationStatus"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"InviteUsersRequest":{"type":"object","description":"Request body for inviting a user to a Byzantine account","required":["accountId","newUsers"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"newUsers":{"type":"array","items":{"$ref":"#/components/schemas/NewUser"}}}},"InviteUsersRequestBodyPasskey":{"type":"object","required":["signedBody","invitedBy","webAuthnStamp"],"properties":{"signedBody":{"$ref":"#/components/schemas/CreateUsersRequest"},"invitedBy":{"$ref":"#/components/schemas/Uuid"},"webAuthnStamp":{"type":"string","description":"Cryptographically passkey signed (stamped). For more info, see [authentication methods](https://docs.byzantine.fi/api-reference/authentication-methods)."}}},"InviteUsersRequestResponse":{"type":"object","required":["bodyToSign"],"properties":{"bodyToSign":{"$ref":"#/components/schemas/CreateUsersRequest"}}},"InviteUsersResponse":{"type":"object","description":"Response body when new users are successfully invited to a Byzantine account","required":["accountId","newUsers","invitedBy","invitedAt"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"newUsers":{"type":"array","items":{"$ref":"#/components/schemas/InvitedUser"}},"invitedBy":{"$ref":"#/components/schemas/Uuid"},"invitedAt":{"type":"string","format":"date-time","description":"The timestamp when the users were invited."}}},"InvitedUser":{"type":"object","description":"The details of the new users invited.","required":["userId","firstName","lastName","userEmail"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"firstName":{"type":"string","description":"The first name of the new user.","example":"John"},"lastName":{"type":"string","description":"The last name of the new user.","example":"Doe"},"userEmail":{"type":"string","description":"The email of the new user.","example":"john.doe@example.com"}}},"IsSmartAccountByChain":{"type":"object","required":["ethereum","base"],"properties":{"ethereum":{"type":"boolean","description":"Atlas delegation active on Ethereum Mainnet (`chain_id` 1)"},"base":{"type":"boolean","description":"Atlas delegation active on Base (`chain_id` 8453)"}}},"LiquidationAddress":{"type":"object","required":["bankAccountId","accountId","name","liquidationAddress","createdAt","destinationCurrency","destinationRail"],"properties":{"bankAccountId":{"$ref":"#/components/schemas/Uuid"},"accountId":{"$ref":"#/components/schemas/Uuid"},"name":{"type":"string"},"liquidationAddress":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"destinationCurrency":{"$ref":"#/components/schemas/Currency"},"destinationRail":{"$ref":"#/components/schemas/PaymentRail"}}},"ListCredentialsResponse":{"type":"object","required":["credentials"],"properties":{"credentials":{"type":"array","items":{"$ref":"#/components/schemas/CredentialSummaryResponse"},"description":"Credentials owned by the authenticated integrator, oldest first."}}},"ListEventsQuery":{"type":"object","properties":{"accountId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"userId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"transactionId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"eventType":{"type":"string","description":"Filter by a lifecycle event type. `webhook.test` is not a lifecycle event.","nullable":true},"createdAfter":{"type":"string","format":"date-time","description":"Exclusive lower bound on database creation time.","nullable":true},"createdBefore":{"type":"string","format":"date-time","description":"Exclusive upper bound on database creation time.","nullable":true},"cursor":{"type":"string","description":"Opaque page cursor. Keep filters unchanged while paging.","nullable":true},"limit":{"type":"integer","format":"int64","description":"Page size from 1 to 250. Defaults to 100.","nullable":true}}},"ListEventsResponse":{"type":"object","description":"One page of events with an opaque cursor for the next page, if any.","required":["events"],"properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/EventHistoryItem"}},"nextCursor":{"type":"string","nullable":true}}},"ListWebhookDeliveriesQuery":{"type":"object","description":"Delivery history filters accept documented camelCase query names plus `snake_case` aliases for operator ergonomics.","properties":{"limit":{"type":"integer","format":"int64","description":"Page size for delivery history. Defaults to 100 and is capped at 250.","nullable":true},"offset":{"type":"integer","format":"int64","description":"Number of delivery records to skip. Defaults to 0.","nullable":true},"includeAttempts":{"type":"boolean","description":"Include delivery attempt records for each delivery. Defaults to true for backwards compatibility; set false for lighter list views.","nullable":true},"subscriptionId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"eventId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"eventType":{"type":"string","description":"Restrict to one public event type, e.g. `customer.active` or `webhook.test`.","nullable":true},"status":{"allOf":[{"$ref":"#/components/schemas/WebhookDeliveryStatus"}],"nullable":true},"sourceType":{"type":"string","description":"Restrict to source type. Known values include `bridge`, `sumsub`, and `customer_api`; future sources are exact-match strings.","nullable":true},"sourceId":{"type":"string","description":"Restrict to the durable event source id.","nullable":true},"accountId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}}},"ListWebhookDeliveriesResponse":{"type":"object","required":["deliveries","limit","offset","hasMore","attemptsIncluded"],"properties":{"deliveries":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDeliveryWithAttempts"}},"limit":{"type":"integer","format":"int64"},"offset":{"type":"integer","format":"int64"},"hasMore":{"type":"boolean"},"attemptsIncluded":{"type":"boolean"}}},"ListWebhookSubscriptionsResponse":{"type":"object","required":["subscriptions"],"properties":{"subscriptions":{"type":"array","items":{"$ref":"#/components/schemas/WebhookSubscriptionResponse"}}}},"NaiveDateTime":{"type":"string","format":"date-time","description":"A naive datetime string without timezone","example":"2023-01-01T12:00:00"},"NewUser":{"type":"object","description":"The details of the new user to invite.","required":["firstName","lastName","userEmail"],"properties":{"firstName":{"type":"string","description":"The first name of the user to invite.","example":"John"},"lastName":{"type":"string","description":"The last name of the user to invite.","example":"Doe"},"userEmail":{"type":"string","description":"The email of the user to invite.","example":"john.doe@example.com"}}},"OAuthProviderParam":{"type":"object","required":["providerName","oidcToken"],"properties":{"providerName":{"type":"string"},"oidcToken":{"type":"string"}}},"OtpAuthRequestBody":{"type":"object","description":"Request to authenticate with OTP code","required":["accountId","userId","otpId","otpCode"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"userId":{"$ref":"#/components/schemas/Uuid"},"otpId":{"type":"string","description":"The OTP ID returned by init-otp","example":"otp_a1b2c3d4567890abcdef"},"otpCode":{"type":"string","description":"The OTP code received by email","example":"123456789"}}},"OtpAuthResponse":{"type":"object","description":"Response from OTP authentication","required":["session","sessionId","expiresAt"],"properties":{"session":{"type":"string","description":"Session metadata"},"sessionId":{"$ref":"#/components/schemas/Uuid"},"expiresAt":{"type":"string","description":"Session expiration timestamp (ISO 8601)","example":"2026-02-05T12:00:00Z"}}},"PasskeyPayloadRequestResponse":{"type":"object","required":["bodyToSign","transactionId"],"properties":{"bodyToSign":{"$ref":"#/components/schemas/SignRawPayloadRequest"},"transactionId":{"$ref":"#/components/schemas/Uuid"},"destinationBankAccount":{"allOf":[{"$ref":"#/components/schemas/BankAccount"}],"nullable":true}}},"PaymentRail":{"type":"string","enum":["ach","sepa","ethereum","base"]},"PaymentRailVirtualAccount":{"type":"string","enum":["achPush","fedNow","pix","sepa","spei","wire","unknown"]},"PendingInvitation":{"type":"object","description":"Response body for a pending invitation","required":["invitationId","userId","role","firstName","lastName","userEmail","invitedBy"],"properties":{"invitationId":{"$ref":"#/components/schemas/Uuid"},"userId":{"$ref":"#/components/schemas/Uuid"},"role":{"$ref":"#/components/schemas/AccountUserRole"},"firstName":{"type":"string"},"lastName":{"type":"string"},"userEmail":{"type":"string"},"invitedBy":{"$ref":"#/components/schemas/Uuid"}}},"PendingWithdrawals":{"type":"object","required":["balance","shares"],"properties":{"balance":{"$ref":"#/components/schemas/Decimal"},"shares":{"$ref":"#/components/schemas/Decimal"}}},"SendTransactionResponseBody":{"type":"object","required":["transactionId","status"],"properties":{"transactionId":{"$ref":"#/components/schemas/Uuid"},"status":{"$ref":"#/components/schemas/TransactionStatusView"},"broadcastedAt":{"type":"string","format":"date-time","description":"Exact timestamp when the transaction was broadcasted on-chain.","example":"2025-11-19T21:16:02.894Z","nullable":true},"transactionHash":{"type":"string","description":"The on-chain transaction hash. Available immediately after broadcast - poll\nRPC's `eth_getTransactionReceipt` to get the full receipt.","nullable":true},"fiatDepositInstructions":{"allOf":[{"$ref":"#/components/schemas/SourceDepositInstructions"}],"nullable":true},"destinationBankAccount":{"allOf":[{"$ref":"#/components/schemas/BankAccount"}],"nullable":true},"withdrawalRequest":{"allOf":[{"$ref":"#/components/schemas/WithdrawalRequestView"}],"nullable":true}}},"SignPayloadRequestBodyPasskey":{"type":"object","required":["signedBody","transactionId","webAuthnStamp"],"properties":{"signedBody":{"$ref":"#/components/schemas/SignedBody"},"transactionId":{"$ref":"#/components/schemas/Uuid"},"webAuthnStamp":{"type":"string","description":"Cryptographically passkey signed (stamped). For more info, see [authentication methods](https://docs.byzantine.fi/api-reference/authentication-methods)."}}},"SignRawPayloadParams":{"type":"object","description":"The parameters object containing the specific intent data for this transaction.","required":["signWith","payload","encoding","hashFunction"],"properties":{"signWith":{"type":"string","description":"A Wallet account address, Private Key address, or Private Key identifier."},"payload":{"type":"string","description":"Raw unsigned payload to be signed."},"encoding":{"type":"string","description":"How the payload is encoded: `PAYLOAD_ENCODING_HEXADECIMAL` or `PAYLOAD_ENCODING_EIP7702_AUTHORIZATION`","example":"PAYLOAD_ENCODING_HEXADECIMAL"},"hashFunction":{"type":"string","description":"Rather Turnkey should hash the message or not: `HASH_FUNCTION_NO_OP` or `HASH_FUNCTION_KECCAK256`","example":"HASH_FUNCTION_NO_OP"}}},"SignRawPayloadRequest":{"type":"object","description":"The object that needs to be signed by the end user to make a transaction.","required":["type","timestampMs","organizationId","parameters"],"properties":{"type":{"type":"string","description":"Defaults to `ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2`","example":"ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2"},"timestampMs":{"type":"string","description":"UNIX timestamp of the creation of the transaction."},"organizationId":{"type":"string","description":"The account ID making the transaction."},"parameters":{"$ref":"#/components/schemas/SignRawPayloadParams"}}},"SignRawPayloadsParams":{"type":"object","description":"The parameters object containing the specific intent data for this batch of transactions.","required":["signWith","payloads","encoding","hashFunction"],"properties":{"signWith":{"type":"string","description":"A Wallet account address, Private Key address, or Private Key identifier."},"payloads":{"type":"array","items":{"type":"string"},"description":"An array of raw unsigned payloads to be signed."},"encoding":{"type":"string","description":"How the payload is encoded: `PAYLOAD_ENCODING_HEXADECIMAL` or `PAYLOAD_ENCODING_EIP7702_AUTHORIZATION`","example":"PAYLOAD_ENCODING_HEXADECIMAL"},"hashFunction":{"type":"string","description":"Rather Turnkey should hash the message or not: `HASH_FUNCTION_NO_OP` or `HASH_FUNCTION_KECCAK256`","example":"HASH_FUNCTION_NO_OP"}}},"SignRawPayloadsRequest":{"type":"object","description":"The object that needs to be signed by the end user to make a batch of transactions.","required":["type","timestampMs","organizationId","parameters"],"properties":{"type":{"type":"string","description":"Defaults to `ACTIVITY_TYPE_SIGN_RAW_PAYLOADS`.","example":"ACTIVITY_TYPE_SIGN_RAW_PAYLOADS"},"timestampMs":{"type":"string","description":"UNIX timestamp of the creation of the transaction."},"organizationId":{"type":"string","description":"The account ID making the transaction."},"parameters":{"$ref":"#/components/schemas/SignRawPayloadsParams"}}},"SignTransactionParams":{"type":"object","description":"The parameters object containing the specific intent data for this transaction.","required":["signWith","unsignedTransaction","type"],"properties":{"signWith":{"type":"string","description":"A Wallet account address, Private Key address, or Private Key identifier."},"unsignedTransaction":{"type":"string","description":"Raw unsigned transaction to be signed."},"type":{"type":"string","description":"Defaults to `TRANSACTION_TYPE_ETHEREUM`","example":"TRANSACTION_TYPE_ETHEREUM"}}},"SignTransactionRequest":{"type":"object","description":"The object that needs to be signed by the end user to make a transaction.","required":["type","timestampMs","organizationId","parameters"],"properties":{"type":{"type":"string","description":"Defaults to `ACTIVITY_TYPE_SIGN_TRANSACTION_V2`","example":"ACTIVITY_TYPE_SIGN_TRANSACTION_V2"},"timestampMs":{"type":"string","description":"UNIX timestamp of the creation of the transaction."},"organizationId":{"type":"string","description":"The account ID making the transaction."},"parameters":{"$ref":"#/components/schemas/SignTransactionParams"}}},"SignedBody":{"oneOf":[{"$ref":"#/components/schemas/SignRawPayloadRequest"},{"$ref":"#/components/schemas/SignRawPayloadsRequest"}],"description":"Accepts either a single-payload or a multi-payload request Turnkey request"},"SortOrder":{"type":"string","description":"Chronological sort direction over the field `updatedAt`.","enum":["asc","desc"]},"SourceDepositInstructions":{"type":"object","required":["currency","bankName","bankAddress","paymentRails","bankBeneficiaryName"],"properties":{"currency":{"$ref":"#/components/schemas/Currency"},"expectedDepositAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"}],"nullable":true},"bankName":{"type":"string","description":"The name of the beneficiary bank.","example":"Lead Bank"},"bankAddress":{"type":"string","description":"The address of the beneficiary bank.","example":"1801 Main St., Kansas City, MO 64108"},"paymentRails":{"type":"array","items":{"$ref":"#/components/schemas/PaymentRailVirtualAccount"}},"bankBeneficiaryName":{"type":"string","description":"The name of the beneficiary. Either first and last name, or a business name.","example":"John Smith"},"bankBeneficiaryAddress":{"type":"string","description":"The address of the beneficiary. Not returned by Bridge for all rails (e.g. omitted on SEPA virtual accounts).","example":"1234 Main St., Kansas City, MO 64108","nullable":true},"bankAccountNumber":{"type":"string","description":"In case of a USD deposit, the bank account number to deposit to.","example":"1234567890","nullable":true},"bankRoutingNumber":{"type":"string","description":"In case of a USD deposit, the ban routing number to deposit to.","example":"87654321","nullable":true},"iban":{"type":"string","description":"In case of a EUR deposit, the IBAN to deposit to.","example":"FR12345678901234567890","nullable":true},"bic":{"type":"string","description":"In case of a EUR deposit, the BIC to deposit to.","example":"BICFR12345","nullable":true}}},"SourceDepositInstructionsWrapper":{"allOf":[{"$ref":"#/components/schemas/SourceDepositInstructions"},{"type":"object","required":["objectId"],"properties":{"objectId":{"$ref":"#/components/schemas/Uuid"}}}]},"SubAccountBalances":{"type":"object","required":["wallet_address","positions","idle"],"properties":{"wallet_address":{"type":"string","description":"The sub-account's wallet address","example":"0xa5b709B14859EdF820347D78E587b1634B0ec791"},"positions":{"type":"array","items":{"$ref":"#/components/schemas/VaultBalance"},"description":"List of sub-account's active positions (balances across vaults)"},"idle":{"type":"array","items":{"$ref":"#/components/schemas/IdleBalance"},"description":"List of sub-account's idle balances"}}},"TeamMember":{"type":"object","description":"Response body for a team member","required":["userId","firstName","lastName","userEmail","role","joinedAt"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"firstName":{"type":"string"},"lastName":{"type":"string"},"userEmail":{"type":"string"},"role":{"$ref":"#/components/schemas/AccountUserRole"},"joinedAt":{"type":"string","format":"date-time"}}},"TestWebhookDeliveryResponse":{"type":"object","required":["event","delivery"],"properties":{"event":{"$ref":"#/components/schemas/WebhookEvent"},"delivery":{"$ref":"#/components/schemas/WebhookDelivery"},"attempt":{"allOf":[{"$ref":"#/components/schemas/WebhookDeliveryAttempt"}],"nullable":true}}},"TopVault":{"type":"object","required":["vault_address","chain_id","is_active","is_asynchronous"],"properties":{"vault_address":{"type":"string"},"chain_id":{"type":"integer","format":"int32"},"is_active":{"type":"boolean"},"is_asynchronous":{"type":"boolean"},"strategy_vault_address":{"type":"string","nullable":true},"fallback_adapter":{"type":"string","nullable":true}}},"TransactionReceipt":{"type":"object","description":"Ethereum transaction receipt","properties":{"transactionHash":{"type":"string","example":"0x123..."},"transactionIndex":{"type":"string","nullable":true},"blockHash":{"type":"string","nullable":true},"blockNumber":{"type":"string","nullable":true},"gasUsed":{"type":"string"},"effectiveGasPrice":{"type":"string"},"blobGasUsed":{"type":"string","nullable":true},"blobGasPrice":{"type":"string","nullable":true},"from":{"type":"string"},"to":{"type":"string","nullable":true},"contractAddress":{"type":"string","nullable":true}}},"TransactionStatusView":{"type":"string","description":"The current status of the transaction, as returned by the API.","enum":["withdrawal_initiated","waiting_for_funds","funds_in_transfer","funds_received","processing","completed","simulation_failed","reverted","refunded","cancelled"],"example":"completed"},"TransactionType":{"type":"string","description":"Type of transaction stored in the database.","enum":["authorization","approve","approve_deposit","deposit","withdraw","transfer","withdraw_transfer","onramp","offramp"],"example":"deposit"},"TransactionTypeView":{"type":"string","description":"Type of transaction returned by the API.","enum":["onramp","deposit","onramp_deposit","withdraw","offramp","withdraw_offramp","authorization","approve","transfer"],"example":"deposit"},"TransactionView":{"type":"object","description":"Details of a transaction","required":["transactionId","accountId","chainId","intermediaryAmount","type","status","createdAt","updatedAt"],"properties":{"transactionId":{"$ref":"#/components/schemas/Uuid"},"relatedTransactionId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"accountId":{"$ref":"#/components/schemas/Uuid"},"chainId":{"type":"integer","format":"int32"},"vaultAddr":{"type":"string","nullable":true},"intermediaryAmount":{"$ref":"#/components/schemas/Decimal"},"type":{"$ref":"#/components/schemas/TransactionTypeView"},"status":{"$ref":"#/components/schemas/TransactionStatusView"},"transactionHash":{"type":"string","nullable":true},"broadcastedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"sourceCurrency":{"allOf":[{"$ref":"#/components/schemas/Currency"}],"nullable":true},"destinationCurrency":{"allOf":[{"$ref":"#/components/schemas/Currency"}],"nullable":true},"sourceAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"}],"nullable":true},"destinationAmount":{"allOf":[{"$ref":"#/components/schemas/Decimal"}],"nullable":true},"destinationAddress":{"type":"string","nullable":true},"account":{"allOf":[{"$ref":"#/components/schemas/AccountMinimalView"}],"nullable":true},"withdrawalRequest":{"allOf":[{"$ref":"#/components/schemas/WithdrawalRequestView"}],"nullable":true}}},"TransferRequestBody":{"type":"object","required":["accountId","currency","amount","destinationAddress"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"currency":{"$ref":"#/components/schemas/CryptoCurrency"},"amount":{"$ref":"#/components/schemas/Decimal"},"destinationAddress":{"type":"string","description":"The destination wallet address.","example":"0x08fF6dD6e4d7ec3F5fca97e17e0ee1099b74C069"}}},"Transports":{"type":"string","enum":["AUTHENTICATOR_TRANSPORT_BLE","AUTHENTICATOR_TRANSPORT_INTERNAL","AUTHENTICATOR_TRANSPORT_NFC","AUTHENTICATOR_TRANSPORT_USB","AUTHENTICATOR_TRANSPORT_HYBRID","Unknown"]},"UpdateAssociatedPerson":{"type":"object","description":"Associated person update payload. All fields are optional — only provided fields are updated.","properties":{"userInfo":{"allOf":[{"$ref":"#/components/schemas/UpdateUserInfo"}],"nullable":true},"beneficiaryDetails":{"allOf":[{"$ref":"#/components/schemas/UpdateBeneficiaryDetails"}],"nullable":true},"verificationDocuments":{"type":"array","items":{"$ref":"#/components/schemas/UserVerificationDocument"},"nullable":true}}},"UpdateAssociatedPersonRequest":{"type":"object","description":"Request body for updating an associated person's details.","required":["beneficiaryId","associatedPerson"],"properties":{"beneficiaryId":{"$ref":"#/components/schemas/Uuid"},"associatedPerson":{"$ref":"#/components/schemas/UpdateAssociatedPerson"}}},"UpdateAssociatedPersonResponse":{"type":"object","description":"Response body for updating an associated person","required":["beneficiaryId","verificationStatus"],"properties":{"beneficiaryId":{"$ref":"#/components/schemas/Uuid"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"userInfo":{"allOf":[{"$ref":"#/components/schemas/UpdateUserInfo"}],"nullable":true},"beneficiaryDetails":{"allOf":[{"$ref":"#/components/schemas/UpdateBeneficiaryDetails"}],"nullable":true},"verificationDocuments":{"type":"array","items":{"$ref":"#/components/schemas/VerificationDocumentResponse"},"nullable":true},"missingDocuments":{"type":"array","items":{"type":"string"},"description":"List of missing required verification documents. Present only if not all required documents have been submitted.","nullable":true}}},"UpdateBeneficiaryDetails":{"type":"object","description":"Beneficiary details update payload. All fields are optional — only provided fields are updated.","properties":{"beneficiaryType":{"type":"array","items":{"$ref":"#/components/schemas/BeneficiaryType"},"nullable":true},"title":{"type":"string","description":"Required for representatives. The title held at the business.","example":"CTO","nullable":true},"ownershipPercentage":{"type":"number","format":"double","description":"Required for UBOs. The % of direct or indirect business ownership.","example":50.0,"nullable":true}}},"UpdateCredentialPayload":{"type":"object","properties":{"accessScope":{"allOf":[{"$ref":"#/components/schemas/IntegratorAccessScope"}],"nullable":true},"active":{"type":"boolean","description":"New active status for the credential. Left untouched when omitted.","nullable":true},"label":{"type":"string","description":"New label for the credential. Left untouched when omitted.","nullable":true}}},"UpdateEntityAccountRequest":{"type":"object","description":"Request body for updating an entity account's company details.\nOnly the provided fields will be updated. To add or update entity's associated persons, see the dedicated associated-persons endpoints.","required":["accountId"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"entityInfo":{"allOf":[{"$ref":"#/components/schemas/UpdateEntityInfo"}],"nullable":true},"entityDocuments":{"type":"array","items":{"$ref":"#/components/schemas/EntityVerificationDocument"},"description":"Additional entity verification documents, typically the ones listed in `missingDocuments` of a\nprevious response. See [accepted documents](https://docs.byzantine.fi/api-reference/documents).","nullable":true}}},"UpdateEntityAccountResponse":{"type":"object","description":"Response body for updating an entity account","required":["entityId","accountId","verificationStatus"],"properties":{"entityId":{"$ref":"#/components/schemas/Uuid"},"accountId":{"$ref":"#/components/schemas/Uuid"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"entityInfo":{"allOf":[{"$ref":"#/components/schemas/UpdateEntityInfo"}],"nullable":true},"entityDocuments":{"type":"array","items":{"$ref":"#/components/schemas/VerificationDocumentResponse"},"nullable":true},"missingDocuments":{"type":"array","items":{"type":"string"},"description":"List of missing required entity verification documents. Present only if not all required documents have been submitted.\nValues: `COMPANY_DETAILS_DOCUMENT`, `OWNERSHIP_STRUCTURE_DOCUMENT`, `SOURCE_OF_FUNDS_DOCUMENT`,\n`PROOF_OF_ADDRESS_DOCUMENT`, `PHYSICAL_ADDRESS_QUESTIONNAIRE`, `ACTIVITY_INFO_QUESTIONNAIRE`,\n`FINANCIAL_INFO_QUESTIONNAIRE`.","nullable":true},"missingCompanyData":{"type":"array","items":{"type":"string"},"description":"List of missing required company data. Present only if not all required company information has been provided.","nullable":true}}},"UpdateEntityInfo":{"type":"object","description":"Entity information for update. All fields are optional — only provided fields are updated.","properties":{"businessLegalName":{"type":"string","description":"The legal name of the business.","example":"ByzCorp Incorporated","nullable":true},"businessTradeName":{"type":"string","description":"The trade name of the business. Can be the same as the entity name.","example":"ByzCorp","nullable":true},"businessType":{"allOf":[{"$ref":"#/components/schemas/BusinessType"}],"nullable":true},"companyNumber":{"type":"string","description":"The registered business number. Depending on the country of registration, we accept these [entity number types](https://docs.byzantine.fi/api-reference/lists/company-number-types).","example":"123456789","nullable":true},"email":{"type":"string","description":"Business contact email.","example":"byzcorp@example.com","nullable":true},"website":{"type":"string","description":"Business website.","example":"byzcorp.com","nullable":true},"logoUrl":{"type":"string","description":"URL of the entity's logo.","example":"https://byzcorp.com/logo.png","nullable":true},"registeredAddress":{"allOf":[{"$ref":"#/components/schemas/Address"}],"nullable":true},"physicalAddress":{"allOf":[{"$ref":"#/components/schemas/Address"}],"nullable":true},"activityInfo":{"allOf":[{"$ref":"#/components/schemas/ActivityInfo"}],"nullable":true},"financialInfo":{"allOf":[{"$ref":"#/components/schemas/FinancialInfo"}],"nullable":true},"highRiskInfo":{"allOf":[{"$ref":"#/components/schemas/HighRiskInfo"}],"nullable":true}}},"UpdateIndividualAccountRequest":{"type":"object","description":"Request body for updating an individual account's user details.\nOnly the provided fields will be updated. Mirrors `CreateIndividualAccountRequest` structure.","required":["accountId"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"userInfo":{"allOf":[{"$ref":"#/components/schemas/UpdateUserInfo"}],"nullable":true},"additionalUserInfo":{"allOf":[{"$ref":"#/components/schemas/AdditionalUserInfo"}],"nullable":true},"verificationDocuments":{"type":"array","items":{"$ref":"#/components/schemas/UserVerificationDocument"},"nullable":true}}},"UpdateIndividualAccountResponse":{"type":"object","description":"Response body for updating an individual account","required":["userId","accountId","verificationStatus"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"accountId":{"$ref":"#/components/schemas/Uuid"},"verificationStatus":{"$ref":"#/components/schemas/VerificationStatus"},"userInfo":{"allOf":[{"$ref":"#/components/schemas/UpdateUserInfo"}],"nullable":true},"additionalUserInfo":{"allOf":[{"$ref":"#/components/schemas/AdditionalUserInfo"}],"nullable":true},"verificationDocuments":{"type":"array","items":{"$ref":"#/components/schemas/VerificationDocumentResponse"},"nullable":true},"missingDocuments":{"type":"array","items":{"type":"string"},"description":"List of missing required verification steps. Present only if not all required documents have been submitted.","nullable":true}}},"UpdateRootQuorumParams":{"type":"object","description":"The parameters object containing the specific intent data for updating the root quorum.","required":["threshold","userIds"],"properties":{"threshold":{"type":"integer","format":"int32","description":"The threshold of unique approvals to reach quorum.","example":1,"minimum":0},"userIds":{"type":"array","items":{"type":"string"},"description":"The unique identifiers of users who comprise the quorum set."}}},"UpdateRootQuorumRequest":{"type":"object","description":"The object that needs to be signed by the end user to update the root quorum of a Byzantine account.","required":["type","timestampMs","organizationId","parameters"],"properties":{"type":{"type":"string","description":"Defaults to `ACTIVITY_TYPE_UPDATE_ROOT_QUORUM`","example":"ACTIVITY_TYPE_UPDATE_ROOT_QUORUM"},"timestampMs":{"type":"string","description":"UNIX timestamp of the creation of the request."},"organizationId":{"type":"string","description":"The account ID (sub-organization ID) updating the root quorum.","example":"d107c1e1-766a-4091-802c-de61a3973e91"},"parameters":{"$ref":"#/components/schemas/UpdateRootQuorumParams"}}},"UpdateUserInfo":{"type":"object","description":"Personal information about the user for update. All fields are optional — only provided fields are updated.\nSame as `UserInfo` but without `email` (email cannot be changed).","properties":{"firstName":{"type":"string","description":"First name of the user.","example":"John","nullable":true},"middleName":{"type":"string","description":"Middle name of the user.","example":"William","nullable":true},"lastName":{"type":"string","description":"Last name of the user.","example":"Smith","nullable":true},"phone":{"type":"string","description":"Phone number of the user.","example":"+33 123 456 789","nullable":true},"birthDate":{"type":"string","description":"User's date of birth.","example":"1990-01-01","nullable":true},"nationality":{"allOf":[{"$ref":"#/components/schemas/CountryCode"}],"nullable":true},"countryOfBirth":{"allOf":[{"$ref":"#/components/schemas/CountryCode"}],"nullable":true},"residentialAddress":{"allOf":[{"$ref":"#/components/schemas/Address"}],"nullable":true},"socialSecurityNumber":{"type":"string","description":"Required exclusively for USA-based users. Must be the full social security number.","example":"123-45-6789","nullable":true},"profilePictureUrl":{"type":"string","description":"URL of the user's profile picture (can be an avatar)","nullable":true}}},"UpdateUsersRoleRequest":{"type":"object","description":"Request body for updating users' roles within a Byzantine account","required":["accountId","role","userIds"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"role":{"$ref":"#/components/schemas/AccountUserRole"},"userIds":{"type":"array","items":{"$ref":"#/components/schemas/Uuid"},"description":"The unique identifiers of users beeing promoted / demoted."}}},"UpdateUsersRoleRequestBodyPasskey":{"type":"object","required":["signedBody","webAuthnStamp"],"properties":{"signedBody":{"$ref":"#/components/schemas/UpdateRootQuorumRequest"},"webAuthnStamp":{"type":"string","description":"Cryptographically passkey signed (stamped). For more info, see [authentication methods](https://docs.byzantine.fi/api-reference/authentication-methods)."}}},"UpdateUsersRoleRequestResponse":{"type":"object","required":["bodyToSign"],"properties":{"bodyToSign":{"$ref":"#/components/schemas/UpdateRootQuorumRequest"}}},"UpdateUsersRoleResponse":{"type":"object","description":"Response body when users' roles are successfully updated","required":["accountId","threshold","rootUserIds"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"threshold":{"type":"integer","format":"int32","description":"The new threshold of unique approvals to reach quorum.","example":1,"minimum":0},"rootUserIds":{"type":"array","items":{"type":"string"},"description":"The unique identifiers of users who now comprise the quorum set."}}},"UpdateWebhookSubscriptionRequest":{"type":"object","properties":{"url":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"enabled":{"type":"boolean","nullable":true},"eventTypes":{"type":"array","items":{"type":"string"},"nullable":true},"httpHeaders":{"type":"object","description":"Per-header patch merged into the current custom headers: a string sets or replaces that\nheader, null deletes it, and an absent name keeps its value. Omit, null or {} to leave\nall headers unchanged. Every name in the patch must be a valid, non-reserved HTTP header\nname; limits (max 16, 8 KiB total) and case-insensitive duplicates are validated on the\nmerged result.","additionalProperties":{"type":"string","nullable":true},"nullable":true}}},"UserDetailsQuery":{"type":"object","description":"Query parameters for getting user details","properties":{"userId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"email":{"type":"string","nullable":true}}},"UserDocumentType":{"type":"string","description":"Type of the document. See the full list of [accepted documents](https://docs.byzantine.fi/api-reference/documents).","enum":["passport","national_id_front","national_id_back","proof_of_address","other"]},"UserInfo":{"type":"object","description":"Personal information about the user required for identity verification.","required":["firstName","lastName","email"],"properties":{"firstName":{"type":"string","description":"First name of the user.","example":"John"},"middleName":{"type":"string","description":"Middle name of the user.","example":"William","nullable":true},"lastName":{"type":"string","description":"Last name of the user.","example":"Smith"},"email":{"type":"string","description":"Contact email of the user.","example":"john.smith@example.com"},"phone":{"type":"string","description":"Phone number of the user.","example":"+33 123 456 789","nullable":true},"birthDate":{"type":"string","description":"User's date of birth.","example":"1990-01-01","nullable":true},"nationality":{"allOf":[{"$ref":"#/components/schemas/CountryCode"}],"nullable":true},"countryOfBirth":{"allOf":[{"$ref":"#/components/schemas/CountryCode"}],"nullable":true},"residentialAddress":{"allOf":[{"$ref":"#/components/schemas/Address"}],"nullable":true},"socialSecurityNumber":{"type":"string","description":"Required exclusively for USA-based users. Must be the full social security number.","example":"123-45-6789","nullable":true},"profilePictureUrl":{"type":"string","description":"URL of the user's profile picture (can be an avatar)","nullable":true}}},"UserSourceOfFunds":{"type":"string","description":"Source of funds for users. Required for high risk users.","enum":["company_funds","ecommerce_reseller","gambling_proceeds","gifts","government_benefits","inheritance","investments_loans","pension_retirement","salary","sale_of_assets_real_estate","savings","someone_elses_funds"],"example":"salary"},"UserSummary":{"type":"object","description":"Minimal user information (user id, name and email)","required":["userId","firstName","lastName","email"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"}}},"UserSummaryWithRole":{"type":"object","description":"Minimal user information with the user's role in the account","required":["userId","firstName","lastName","email","role"],"properties":{"userId":{"$ref":"#/components/schemas/Uuid"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"role":{"$ref":"#/components/schemas/AccountUserRole"}}},"UserVerificationDocument":{"type":"object","description":"Document(s) to verify the identity of the user.","required":["documentType","issuingCountry","document"],"properties":{"documentType":{"$ref":"#/components/schemas/UserDocumentType"},"documentNumber":{"type":"string","description":"Required for identity documents (passport, national ID). Must be the full document number.","example":"FR1234567890","nullable":true},"description":{"type":"string","description":"Required if document type is 'other'.","example":"Additional supporting document","nullable":true},"issuingCountry":{"$ref":"#/components/schemas/CountryCode"},"document":{"type":"string","format":"data:[MIME];base64,[base64-encoded-data]","description":"The document to be uploaded.\n\nSupported MIME types: image/jpeg, image/png, image/heic, image/tiff, application/pdf","example":"data:image/png;base64,iVBORw0lFTkSuQmCC..."}}},"Uuid":{"type":"string","format":"uuid","description":"A UUID string","example":"550e8400-e29b-41d4-a716-446655440000"},"VaultBalance":{"type":"object","required":["chain_id","vault_address","is_async_vault","asset_address","currency","balance","shares","price_per_share"],"properties":{"chain_id":{"type":"integer","format":"int64","description":"The vault's chain ID"},"vault_address":{"type":"string","description":"The vault's address"},"is_async_vault":{"type":"boolean","description":"Whether the vault is an asynchronous vault"},"asset_address":{"type":"string","description":"The asset's contract address"},"currency":{"$ref":"#/components/schemas/FiatCurrency"},"balance":{"$ref":"#/components/schemas/Decimal"},"shares":{"$ref":"#/components/schemas/Decimal"},"price_per_share":{"$ref":"#/components/schemas/Decimal"},"pending_withdrawals":{"allOf":[{"$ref":"#/components/schemas/PendingWithdrawals"}],"nullable":true}}},"VaultUpgradePayloadResponse":{"type":"object","description":"Response containing the two raw payloads to sign (withdraw from Base and deposit on Ethereum) in one passkey prompt.","required":["bodyToSign","transactionId","sourceAmount","destinationAmount","destinationVaultAddr"],"properties":{"bodyToSign":{"$ref":"#/components/schemas/SignRawPayloadsRequest"},"transactionId":{"$ref":"#/components/schemas/Uuid"},"sourceAmount":{"$ref":"#/components/schemas/Decimal"},"destinationAmount":{"$ref":"#/components/schemas/Decimal"},"destinationVaultAddr":{"type":"string","description":"The destination vault address on Ethereum.","example":"0x2F99e35Ea811F3cC230B26dfF817604B5D4B6e38"}}},"VaultUpgradeRequestBody":{"type":"object","description":"Request body for initiating a vault upgrade (Base -> Ethereum)","required":["accountId","sourceVaultAddr"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"sourceVaultAddr":{"type":"string","description":"The address of the source vault on Base (8453)","example":"0x061b3aff8e21a9d194ce43cEfc20A0eFf122Ec69"}}},"VerificationDocumentResponse":{"type":"object","description":"Response body for verification documents.","required":["documentType","issuingCountry","documentId"],"properties":{"documentType":{"$ref":"#/components/schemas/DocumentType"},"documentNumber":{"type":"string","description":"The full document number sent with the document.","example":"FR1234567890","nullable":true},"description":{"type":"string","example":"Additional supporting document","nullable":true},"issuingCountry":{"type":"string","description":"The ISO 3166-1 (three-character) country code of the relevant country. See the full list of [countries](https://docs.byzantine.fi/api-reference/lists/countries).","example":"FRA"},"documentId":{"type":"string","description":"Unique identifier assigned to the document.","example":"830c219c-d197-451d-b879-77936a80c452"},"warnings":{"type":"array","items":{"type":"string"},"nullable":true},"errors":{"type":"array","items":{"type":"string"},"nullable":true}}},"VerificationStatus":{"type":"string","description":"The identity verification status of the user.","enum":["not_started","init","under_review","awaiting_associated_person_information","awaiting_information","resubmission_requested","active","rejected","inactive"],"example":"active"},"WebhookDelivery":{"type":"object","required":["id","subscriptionId","eventId","status","attemptCount","createdAt","updatedAt"],"properties":{"id":{"$ref":"#/components/schemas/Uuid"},"subscriptionId":{"$ref":"#/components/schemas/Uuid"},"eventId":{"$ref":"#/components/schemas/Uuid"},"status":{"$ref":"#/components/schemas/WebhookDeliveryStatus"},"nextAttemptAt":{"type":"string","format":"date-time","nullable":true},"attemptCount":{"type":"integer","format":"int32"},"terminalReason":{"type":"string","nullable":true},"lastResponseSummary":{"nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"WebhookDeliveryAttempt":{"type":"object","required":["id","deliveryId","attemptNumber","outcome","signedAt","signedTimestamp","createdAt"],"properties":{"id":{"$ref":"#/components/schemas/Uuid"},"deliveryId":{"$ref":"#/components/schemas/Uuid"},"signingKeyId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"attemptNumber":{"type":"integer","format":"int32"},"outcome":{"$ref":"#/components/schemas/WebhookDeliveryAttemptOutcome"},"statusCode":{"type":"integer","format":"int32","nullable":true},"error":{"type":"string","nullable":true},"latencyMs":{"type":"integer","format":"int32","nullable":true},"signedAt":{"type":"string","format":"date-time"},"signedTimestamp":{"type":"string"},"responseSummary":{"nullable":true},"actor":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"WebhookDeliveryAttemptOutcome":{"type":"string","description":"Outcome of one webhook delivery attempt stored as TEXT in Postgres.","enum":["succeeded","failed"],"example":"succeeded"},"WebhookDeliveryStatus":{"type":"string","description":"Durable webhook delivery lifecycle status stored as TEXT in Postgres.","enum":["pending","sending","succeeded","failed","terminal_failed"],"example":"pending"},"WebhookDeliveryWithAttempts":{"type":"object","required":["delivery","event","attempts"],"properties":{"delivery":{"$ref":"#/components/schemas/WebhookDelivery"},"event":{"$ref":"#/components/schemas/WebhookEvent"},"attempts":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDeliveryAttempt"}}}},"WebhookEvent":{"allOf":[{"$ref":"#/components/schemas/WebhookEventRelated"},{"type":"object","required":["id","eventType","sourceType","sourceId","payload","payloadVersion","createdAt","integratorId"],"properties":{"id":{"$ref":"#/components/schemas/Uuid"},"eventType":{"type":"string"},"sourceType":{"type":"string"},"sourceId":{"type":"string"},"payload":{},"payloadVersion":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"},"integratorId":{"$ref":"#/components/schemas/Uuid"}}}]},"WebhookEventRelated":{"type":"object","description":"Routing block of the public envelope: only the ids relevant to the event are set, the others\nare `null`. Also persisted as typed columns on `webhook_events` for history filters.","properties":{"accountId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"userId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"entityId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"beneficiaryId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"transactionId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}}},"WebhookEventType":{"type":"string","description":"Public outbound webhook event names (`domain.action`). Stored as TEXT in Postgres.","enum":["webhook.test","customer.created","customer.under_review","customer.awaiting_associated_person_information","customer.resubmission_requested","customer.active","customer.rejected","customer.deactivated","customer.deleted","transaction.withdrawal_initiated","transaction.waiting_for_funds","transaction.payment_in_review","transaction.funds_in_transfer","transaction.funds_received","transaction.processing","transaction.completed","transaction.simulation_failed","transaction.reverted"],"example":"customer.created"},"WebhookLifecycleEventPayload":{"type":"object","description":"Public envelope shared by every lifecycle event: the signed webhook body and the\n`GET /v1/query/events` item (which adds `createdAt`).","required":["id","type","occurredAt","livemode","payloadVersion","related"],"properties":{"id":{"$ref":"#/components/schemas/Uuid"},"type":{"$ref":"#/components/schemas/WebhookEventType"},"occurredAt":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"payloadVersion":{"type":"integer","format":"int32"},"related":{"$ref":"#/components/schemas/WebhookEventRelated"},"data":{"description":"Event-type specific resource, named per domain (`customer`, `transaction`, ...)."}}},"WebhookSigningKey":{"type":"object","required":["id","subscriptionId","publicKeyHex","encryptionKeyVersion","keyPurpose","algorithm","activeAt","createdAt"],"properties":{"id":{"$ref":"#/components/schemas/Uuid"},"subscriptionId":{"$ref":"#/components/schemas/Uuid"},"publicKeyHex":{"type":"string"},"encryptionKeyVersion":{"type":"string"},"keyPurpose":{"type":"string"},"algorithm":{"type":"string"},"activeAt":{"type":"string","format":"date-time"},"rotatedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"WebhookSubscriptionDetails":{"type":"object","required":["id","integratorId","url","enabled","eventTypes","endpointSafetyMetadata","httpHeaders","createdAt","updatedAt"],"properties":{"id":{"$ref":"#/components/schemas/Uuid"},"integratorId":{"$ref":"#/components/schemas/Uuid"},"url":{"type":"string"},"name":{"type":"string","nullable":true},"enabled":{"type":"boolean"},"eventTypes":{},"activeSigningKeyId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true},"endpointSafetyMetadata":{},"httpHeaders":{"type":"object","description":"Custom HTTP headers sent with every delivery, keyed by lowercase name.","additionalProperties":{"type":"string"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"WebhookSubscriptionResponse":{"type":"object","required":["subscription","publicKey","algorithm"],"properties":{"subscription":{"$ref":"#/components/schemas/WebhookSubscriptionDetails"},"publicKey":{"type":"string"},"algorithm":{"type":"string"}}},"WithdrawRequestBody":{"type":"object","required":["accountId","vaultAddr","amount","destinationCurrency"],"properties":{"accountId":{"$ref":"#/components/schemas/Uuid"},"vaultAddr":{"type":"string","description":"The address of the vault to withdraw from.","example":"0x1234567890abcdef"},"amount":{"$ref":"#/components/schemas/Decimal"},"destinationCurrency":{"$ref":"#/components/schemas/Currency"},"bankAccountId":{"allOf":[{"$ref":"#/components/schemas/Uuid"}],"nullable":true}}},"WithdrawalRequestView":{"type":"object","required":["requestId","status"],"properties":{"requestId":{"$ref":"#/components/schemas/Uuid"},"status":{"$ref":"#/components/schemas/FxhWithdrawalStatus"}}}},"securitySchemes":{"admin_api_key":{"type":"apiKey","in":"header","name":"X-API-KEY"},"integrator_auth":{"type":"apiKey","in":"header","name":"X-Pubkey, X-Timestamp, X-Signature"}}},"tags":[{"name":"API health","description":"Check API status."},{"name":"Customer management","description":"Endpoints to create, update, and retrieve customer information."},{"name":"Account management","description":"Endpoints to manage accounts, bank accounts, invitations, and user roles."},{"name":"Products","description":"Endpoints to get data about products and vaults."},{"name":"Transactions","description":"Endpoints to create and manage transactions."},{"name":"OTP authentication","description":"Endpoints to initialize and manage user authentication with OTP."},{"name":"Events","description":"Endpoints to list lifecycle events."},{"name":"Webhooks","description":"Integrator-managed outbound webhook subscriptions and delivery history."},{"name":"Integrator key management","description":"Endpoints to inspect the current integrator credential scope, create, update and delete integrator keys."}]}