{ "openapi": "3.1.0", "info": { "title": "HEVN API", "description": "Backend API for HEVN mobile neobank", "version": "0.1.2" }, "paths": { "/api/v1/apps/me": { "get": { "tags": [ "apps", "apps-transfer" ], "summary": "Introspect the calling API key: user identity, owning app, scope, USDC balance and remaining spend allowance — one call.", "operationId": "get_app_me_api_v1_apps_me_get", "parameters": [ { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string", "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppMeResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/apps/transfer": { "post": { "tags": [ "apps", "apps-transfer" ], "summary": "Send USDC from app.smartWalletAddress, signed by the api-key EOA. Requires X-Api-Key with scope including 'apps-transfer'.", "operationId": "transfer_api_v1_apps_transfer_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "Idempotency-Key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Idempotency-Key" } }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string", "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferTargetContext" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRequestResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/apps/transfer/request": { "post": { "tags": [ "apps", "apps-transfer" ], "summary": "Ask the user to approve a transfer, without spending funds.", "operationId": "request_transfer_api_v1_apps_transfer_request_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "Idempotency-Key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Idempotency-Key" } }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string", "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferTargetContext" } } } }, "responses": { "202": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRequestResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/apps/transfers": { "get": { "tags": [ "apps", "apps-transfer" ], "summary": "List recent USDC transfers initiated through the calling API key.", "operationId": "list_app_transfers_api_v1_apps_transfers_get", "parameters": [ { "name": "idempotency_key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Idempotency Key" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Limit" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "default": 0, "title": "Offset" } }, { "name": "x-api-key", "in": "header", "required": true, "schema": { "type": "string", "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/McpTransactionResponse" }, "title": "Response List App Transfers Api V1 Apps Transfers Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance": { "get": { "tags": [ "Balance" ], "summary": "Get wallet balances", "description": "Get OMNI, NEAR, EVM and Swipelux wallet balances for authenticated user.", "operationId": "get_balances_api_v1_balance_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "wallet_type", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/WalletType" }, { "type": "null" } ], "title": "Wallet Type" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BalancesResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/payin/quote": { "post": { "tags": [ "Balance" ], "summary": "Get cross-chain payin quote", "description": "Price a deposit from any chain into the wallet's Base USDC. Send either `amount` in the origin token or `amountTo` in USDC. The quote is recorded; `POST /balance/payin/quote/submit` opens it.", "operationId": "create_payin_quote_api_v1_balance_payin_quote_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayinQuoteRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalQuoteResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/payin/quote/submit": { "post": { "tags": [ "Balance" ], "summary": "Open a payin quote", "description": "Open the quote that was priced and answer with what funds it: the `executionContract` naming the deposit address, the amount and the token to send. Never re-priced — a quote whose price no longer holds answers `410 quote_expired`. Status and hashes are filled in by the background route sync once the deposit lands.", "operationId": "submit_payin_quote_api_v1_balance_payin_quote_submit_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayinSubmitRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitPayoutQuoteResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/payout/quote": { "post": { "tags": [ "Balance" ], "summary": "Get payout quote", "description": "Get quote for payout to contact. Auto-detects payment channel (IBAN/onchain/internal).", "operationId": "get_payout_quote_api_v1_balance_payout_quote_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayoutQuoteRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalQuoteResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/payout/quote/dry_run": { "post": { "tags": [ "Balance" ], "summary": "Estimate payout quote", "description": "Estimate payout amount and fees without a contact or provider-side activation.", "operationId": "dry_run_payout_quote_api_v1_balance_payout_quote_dry_run_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayoutQuoteDryRunRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PayoutQuoteDryRunResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/payout/quote/execute": { "post": { "tags": [ "Balance" ], "summary": "Execute payout quote", "description": "Execute a persisted quote the account authorized with a signature over the `executionContract` that submit returned. Which channel settles it follows from the quote itself.", "operationId": "execute_payout_quote_api_v1_balance_payout_quote_execute_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExecutePayoutQuoteRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitPayoutQuoteResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/payout/quote/submit": { "post": { "tags": [ "Balance" ], "summary": "Activate payout quote", "description": "Activate a payout quote and create pending records. Answers with what the client has to do: a deposit address to fund, a transaction to broadcast, or — when the returned `executionContract` says `requiresExecution` — typed data to sign and hand back at `/balance/payout/quote/execute`, where nothing is placed until then.", "operationId": "submit_payout_quote_api_v1_balance_payout_quote_submit_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitPayoutQuoteRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitPayoutQuoteResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/payout/recipient/capabilities": { "post": { "tags": [ "Balance" ], "summary": "Read payout capabilities for one recipient", "description": "What a payout to this recipient would be allowed to do: one option per bank rail of the user's that could reach them, each carrying its limits, fees, memo and purpose-code rules, and the blockers that stand in the way. Reads the provider's live channel catalogue where one exists (Due), falling back to our declarations otherwise. Takes either a saved `contactId` or raw `account` requisites; books, quotes and writes nothing.", "operationId": "read_recipient_payout_capabilities_api_v1_balance_payout_recipient_capabilities_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipientCapabilitiesRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipientPayoutCapabilities" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/swap/quote": { "post": { "tags": [ "Balance" ], "summary": "Get swap quote", "description": "Quote a move between two accounts the user owns — USDC<->EURC on the Base wallet, or the wallet <-> a the banking provider USD virtual account. Every solver that can serve the route is compared and `allQuotes` ranks them; `executionContract` says how to execute the winner (docs/balance-swap.md).", "operationId": "get_swap_quote_api_v1_balance_swap_quote_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SwapQuoteRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SwapQuoteResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/swap/quote/execute": { "post": { "tags": [ "Balance" ], "summary": "Execute swap quote", "description": "Spend the signature the account gave over the `executionContract` that submit returned — a signed order the backend relays, or a move that debits a provider-held fiat balance. A quote the client settles itself is refused here: it needs nothing beyond submit.", "operationId": "execute_swap_quote_api_v1_balance_swap_quote_execute_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExecuteSwapQuoteRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitPayoutQuoteResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/swap/quote/submit": { "post": { "tags": [ "Balance" ], "summary": "Activate swap quote", "description": "Activate a swap quote. Returns the route's settlement instructions: the deposit address to fund, or the transaction to broadcast. When the returned `executionContract` says `requiresExecution`, nothing is placed yet — sign it and call `/balance/swap/quote/execute`.", "operationId": "submit_swap_quote_api_v1_balance_swap_quote_submit_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitSwapQuoteRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitPayoutQuoteResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/balance/transaction/status/{quote_id}": { "get": { "tags": [ "Balance" ], "summary": "Get transaction status", "description": "Check status of any transaction by quote_id.", "operationId": "get_transaction_status_api_v1_balance_transaction_status__quote_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "quote_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Quote Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalTransactionResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/banks": { "get": { "tags": [ "Banks", "banks" ], "summary": "List all bank rails", "description": "Return every supported bank rail. Rails the user has activated come from the Bank table (with status / iban_data); rails the user has not activated are returned from the static BANK_INFO registry with status=not_started and iban_data=None. If a rail's provider KYC is APPROVED but no ACTIVE Bank row exists yet, syncs lazily from Swipelux / Align before returning.", "operationId": "list_banks_api_v1_banks_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BanksListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/banks/activate": { "post": { "tags": [ "Banks", "banks" ], "summary": "Activate multiple bank rails", "description": "Create or upsert Bank rows for multiple rails in one request. Returns a per-rail result so one pending or failed rail does not abort the batch.", "operationId": "activate_banks_api_v1_banks_activate_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankActivateRailsRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankActivateRailsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/cards": { "post": { "tags": [ "Cards" ], "summary": "Issue new card", "description": "Issue a new virtual or physical card. User must complete KYC first.", "operationId": "issue_card_api_v1_cards_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/IssueCardRequest" }, { "type": "null" } ], "title": "Data" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "get": { "tags": [ "Cards" ], "summary": "Get user's cards", "description": "Sync cards from the card provider and return the list.", "operationId": "get_cards_api_v1_cards_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardsListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/cards/kyc/link": { "post": { "tags": [ "Cards" ], "summary": "Get KYC verification link", "description": "Get link for user to complete KYC verification in browser.", "operationId": "get_kyc_link_api_v1_cards_kyc_link_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KycLinkResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/cards/pre-approve": { "post": { "tags": [ "Cards" ], "summary": "Pre-approve card issuance", "description": "Check the card provider KYC prerequisites and return a verification URL if all required user fields are present.", "operationId": "pre_approve_cards_api_v1_cards_pre_approve_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardsPreApproveResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/cards/{card_id}": { "get": { "tags": [ "Cards" ], "summary": "Get card by ID", "description": "Get single card details by Card UUID.", "operationId": "get_card_api_v1_cards__card_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "card_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Card Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "Cards" ], "summary": "Delete card", "description": "Permanently delete (close) a card by Card UUID. This cannot be undone.", "operationId": "delete_card_api_v1_cards__card_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "card_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Card Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/cards/{card_id}/details": { "post": { "tags": [ "Cards" ], "summary": "Reveal full card details", "description": "Get full card number (PAN), CVV and expiry by Card UUID. Requires wallet signature for confirmation.", "operationId": "reveal_card_api_v1_cards__card_id__details_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "card_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Card Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardRevealRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardDetailsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/cards/{card_id}/freeze": { "post": { "tags": [ "Cards" ], "summary": "Freeze card", "description": "Temporarily freeze a card by Card UUID. Can be unfrozen later.", "operationId": "freeze_card_api_v1_cards__card_id__freeze_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "card_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Card Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/cards/{card_id}/label": { "put": { "tags": [ "Cards" ], "summary": "Set card label", "description": "Set or clear a user-defined label (nickname) for a card by Card UUID. Local-only, not sent to provider.", "operationId": "set_card_label_api_v1_cards__card_id__label_put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "card_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Card Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetCardLabelRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/cards/{card_id}/limit": { "put": { "tags": [ "Cards" ], "summary": "Set card limit", "description": "Set spending limits for a card by Card UUID.", "operationId": "set_card_limit_api_v1_cards__card_id__limit_put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "card_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Card Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetCardLimitRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/cards/{card_id}/unfreeze": { "post": { "tags": [ "Cards" ], "summary": "Unfreeze card", "description": "Unfreeze a previously frozen card by Card UUID.", "operationId": "unfreeze_card_api_v1_cards__card_id__unfreeze_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "card_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Card Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents": { "get": { "tags": [ "documents" ], "summary": "List uploaded documents", "description": "List user-uploaded documents by filter type.", "operationId": "list_uploaded_documents_api_v1_documents_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "doc_type", "in": "query", "required": false, "schema": { "type": "string", "description": "Document filter type, e.g. 'uploaded'", "default": "uploaded", "title": "Doc Type" }, "description": "Document filter type, e.g. 'uploaded'" }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UploadedDocumentListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/contracts": { "post": { "tags": [ "contracts" ], "summary": "Create a recurring billing agreement", "operationId": "create_contract_api_v1_documents_contracts_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateContractRequest" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContractResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "get": { "tags": [ "contracts" ], "summary": "List the current user's contracts", "operationId": "list_contracts_api_v1_documents_contracts_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContractListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/contracts/invoices": { "post": { "tags": [ "invoices" ], "summary": "Create invoice", "operationId": "create_invoice_api_v1_documents_contracts_invoices_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInvoiceRequest" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvoiceResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "get": { "tags": [ "invoices" ], "summary": "List invoices for current user", "operationId": "list_invoices_api_v1_documents_contracts_invoices_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvoiceListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/contracts/invoices/batch_invoicing": { "post": { "tags": [ "invoices" ], "summary": "Generate invoices for multiple contracts", "operationId": "batch_invoicing_api_v1_documents_contracts_invoices_batch_invoicing_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchInvoicingRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchInvoicingResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/contracts/invoices/uploaded": { "post": { "tags": [ "invoices" ], "summary": "Create incoming invoice from uploaded document", "operationId": "create_uploaded_invoice_api_v1_documents_contracts_invoices_uploaded_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUploadedInvoiceRequest" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvoiceResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/contracts/invoices/{invoice_id}": { "get": { "tags": [ "invoices" ], "summary": "Get invoice by ID", "operationId": "get_invoice_api_v1_documents_contracts_invoices__invoice_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "invoice_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Invoice Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvoiceResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": [ "invoices" ], "summary": "Update invoice (set transaction_hash)", "operationId": "update_invoice_api_v1_documents_contracts_invoices__invoice_id__put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "invoice_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Invoice Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateInvoiceRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvoiceResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/contracts/{contract_id}": { "get": { "tags": [ "contracts" ], "summary": "Get a contract", "operationId": "get_contract_api_v1_documents_contracts__contract_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "contract_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Contract Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContractResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "patch": { "tags": [ "contracts" ], "summary": "Update contract terms and billing cycle", "operationId": "update_contract_api_v1_documents_contracts__contract_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "contract_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Contract Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateContractRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContractResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "contracts" ], "summary": "Cancel a contract", "operationId": "cancel_contract_api_v1_documents_contracts__contract_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "contract_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Contract Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContractResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/contracts/{contract_id}/create-invoice": { "post": { "tags": [ "invoices" ], "summary": "Create invoice from contract", "operationId": "create_invoice_from_contract_api_v1_documents_contracts__contract_id__create_invoice_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "contract_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Contract Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateInvoiceFromContractRequest" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvoiceResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/contracts/{contract_id}/pause": { "post": { "tags": [ "contracts" ], "summary": "Pause billing", "operationId": "pause_contract_api_v1_documents_contracts__contract_id__pause_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "contract_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Contract Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContractResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/contracts/{contract_id}/payment_methods": { "put": { "tags": [ "contracts" ], "summary": "Set the contractor's payout methods for a contract", "operationId": "update_contract_payment_methods_api_v1_documents_contracts__contract_id__payment_methods_put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "contract_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Contract Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateContractPaymentMethodsRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContractResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/create": { "post": { "tags": [ "documents" ], "summary": "Create a PDF document from markdown", "description": "Render an uploaded markdown file into a stored HEVN-generated PDF.", "operationId": "create_document_api_v1_documents_create_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarkdownDocumentCreateRequest" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentDraftInfo" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/documents/upload": { "post": { "tags": [ "documents" ], "summary": "Upload a document", "description": "Upload a document to storage. Returns document_id for referencing.", "operationId": "upload_document_api_v1_documents_upload_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KybDocumentUpload" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentDraftInfo" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/entities": { "post": { "tags": [ "B2B", "kyb" ], "summary": "Create a person or company in the KYB graph", "description": "Create one entity. Link it with ``POST /kyb/relationships`` afterwards.", "operationId": "create_kyb_entity_package_alias_api_v1_kyb_b2b_kyb_entities_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityDraftWrite" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityData" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/entities/{entity_id}": { "patch": { "tags": [ "B2B", "kyb" ], "summary": "Update one entity in the KYB graph", "description": "Write only the supplied fields; an explicit ``null`` clears one.", "operationId": "update_kyb_entity_package_alias_api_v1_kyb_b2b_kyb_entities__entity_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entity_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Entity Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityDraftWrite" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityData" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "put": { "tags": [ "B2B", "kyb" ], "summary": "Create or update the entity under a client-chosen id", "description": "Write the entity at this id, creating it if the id is free.\n\nA phone that loses the response to ``POST`` cannot tell a request that\nnever arrived from one that did, and retrying it would create a second\nperson. Letting the client choose the id makes the retry land on the same\nrow — and lets a person and their ownership edge go out together, since\nthe edge can name an id the client already knows.", "operationId": "put_kyb_entity_package_alias_api_v1_kyb_b2b_kyb_entities__entity_id__put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entity_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Entity Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityDraftWrite" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityData" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "B2B", "kyb" ], "summary": "Remove an entity from the KYB graph", "description": "Delete one entity along with its edges, keeping its documents.", "operationId": "delete_kyb_entity_package_alias_api_v1_kyb_b2b_kyb_entities__entity_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entity_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Entity Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/entities/{entity_id}/documents": { "post": { "tags": [ "B2B", "kyb" ], "summary": "Upload a document straight into one entity's slot", "operationId": "upload_kyb_entity_document_package_alias_api_v1_kyb_b2b_kyb_entities__entity_id__documents_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entity_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Entity Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KybEntityDocumentUpload" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentDraftInfo" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/entities/{entity_id}/documents/{document_id}": { "post": { "tags": [ "B2B", "kyb" ], "summary": "File an already-uploaded document under an entity", "description": "For files that already exist — a chat attachment, an earlier upload.", "operationId": "attach_kyb_entity_document_package_alias_api_v1_kyb_b2b_kyb_entities__entity_id__documents__document_id__post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entity_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Entity Id" } }, { "name": "document_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Document Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KybEntityDocumentAttach" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentDraftInfo" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "B2B", "kyb" ], "summary": "Unfile a document from an entity, keeping the file", "description": "The upload is the user's and stays available; only the slot is cleared.", "operationId": "detach_kyb_entity_document_package_alias_api_v1_kyb_b2b_kyb_entities__entity_id__documents__document_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entity_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Entity Id" } }, { "name": "document_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Document Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/graph": { "get": { "tags": [ "B2B", "kyb" ], "summary": "Read the KYB graph", "description": "Every entity this user owns — linked and unlinked — with the ownership edges, resolved documents and the flow's status, in one request.", "operationId": "get_kyb_graph_package_alias_api_v1_kyb_b2b_kyb_graph_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KybGraphResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/owners": { "post": { "tags": [ "B2B", "kyb" ], "summary": "Add an owner and its ownership edge in one request", "operationId": "create_kyb_owner_package_alias_api_v1_kyb_b2b_kyb_owners_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KybOwnerCreateRequest" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KybOwnerResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/owners/{entity_id}": { "delete": { "tags": [ "B2B", "kyb" ], "summary": "Remove an owner, and the entity when nothing else holds it", "description": "Drop the ownership claim; the person goes too unless they own something\nelse or belong to another user's graph. Their documents are unlinked, not\ndeleted. Refused with 409 once a provider holds the edge.", "operationId": "delete_kyb_owner_package_alias_api_v1_kyb_b2b_kyb_owners__entity_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entity_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Entity Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/relationships": { "post": { "tags": [ "B2B", "kyb" ], "summary": "Link two entities in the KYB graph", "description": "Create one ownership edge pointing from the owner to the owned entity.", "operationId": "create_kyb_relationship_package_alias_api_v1_kyb_b2b_kyb_relationships_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityRelationshipDraftWrite" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityRelationshipDraftData" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/relationships/{relationship_id}": { "patch": { "tags": [ "B2B", "kyb" ], "summary": "Update one ownership edge in the KYB graph", "description": "Change the roles or the share on an existing edge; endpoints are fixed.", "operationId": "update_kyb_relationship_package_alias_api_v1_kyb_b2b_kyb_relationships__relationship_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "relationship_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Relationship Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityRelationshipDraftUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/EntityRelationshipDraftData" }, { "$ref": "#/components/schemas/KybPendingShareholderData" } ], "title": "Response Update Kyb Relationship Package Alias Api V1 Kyb B2B Kyb Relationships Relationship Id Patch" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "B2B", "kyb" ], "summary": "Remove one ownership edge from the KYB graph", "description": "Drop the edge, keeping the entities on both ends.", "operationId": "delete_kyb_relationship_package_alias_api_v1_kyb_b2b_kyb_relationships__relationship_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "relationship_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Relationship Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/request": { "post": { "tags": [ "B2B", "kyb" ], "summary": "Request KYB for a provider", "description": "Request KYB verification for a provider", "operationId": "request_kyb_package_alias_api_v1_kyb_b2b_kyb_request_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "title": "Response Request Kyb Package Alias Api V1 Kyb B2B Kyb Request Post" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/kyb/b2b/kyb/subject": { "put": { "tags": [ "B2B", "kyb" ], "summary": "Create or name the entity the KYB application is about", "description": "Return the KYB subject, creating it as a company when it is missing.\n\nEvery other write needs a subject to hang off, so this is the flow's first\ncall. It is explicit rather than a side effect of the first save: creating\nthe subject decides, permanently, whether it is a person or a company.", "operationId": "put_kyb_subject_package_alias_api_v1_kyb_b2b_kyb_subject_put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KybSubjectRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityData" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/public/chains": { "get": { "tags": [ "Public" ], "summary": "Chain & token catalog", "description": "The static chain/token catalog this backend routes on. Clients generate their own copy from this payload so both sides agree on chain codes, token addresses, decimals and provider identifiers.", "operationId": "chain_catalog_api_v1_public_chains_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChainCatalogResponse" } } } } } } }, "/api/v1/public/invoices/{invoice_id}": { "get": { "tags": [ "Public" ], "summary": "Get Public Invoice", "description": "Public invoice details — no auth required.", "operationId": "get_public_invoice_api_v1_public_invoices__invoice_id__get", "parameters": [ { "name": "invoice_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Invoice Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PublicInvoiceResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transactions": { "get": { "tags": [ "Transactions" ], "summary": "Get user transactions", "description": "Get latest user transactions sorted by time.", "operationId": "get_transactions_api_v1_transactions_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Limit" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "default": 0, "title": "Offset" } }, { "name": "sortBy", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/TransactionSortBy", "default": "date" } }, { "name": "sortOrder", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/SortOrder", "default": "desc" } }, { "name": "type", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated transaction types", "title": "Type" }, "description": "Comma-separated transaction types" }, { "name": "incomeOnly", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Incomeonly" } }, { "name": "tag", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated tags", "title": "Tag" }, "description": "Comma-separated tags" }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated unified statuses", "title": "Status" }, "description": "Comma-separated unified statuses" }, { "name": "contactId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated contact UUIDs", "title": "Contactid" }, "description": "Comma-separated contact UUIDs" }, { "name": "bank_account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated bank account UUIDs", "title": "Bank Account Id" }, "description": "Comma-separated bank account UUIDs" }, { "name": "bankAccountId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated bank account UUIDs", "title": "Bankaccountid" }, "description": "Comma-separated bank account UUIDs" }, { "name": "cardId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated Card UUIDs", "title": "Cardid" }, "description": "Comma-separated Card UUIDs" }, { "name": "fromDate", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Fromdate" } }, { "name": "toDate", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Todate" } }, { "name": "asOf", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "description": "Reporting-date cutoff (YYYY-MM-DD). Caps results at the end of that day; ignored when toDate is set.", "title": "Asof" }, "description": "Reporting-date cutoff (YYYY-MM-DD). Caps results at the end of that day; ignored when toDate is set." }, { "name": "hasInvoice", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "True → only transactions linked to an invoice; False → only those without one; omitted → no filter.", "title": "Hasinvoice" }, "description": "True → only transactions linked to an invoice; False → only those without one; omitted → no filter." }, { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.", "title": "Q" }, "description": "Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored." }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnifiedTransactionListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transactions/breakdown": { "get": { "tags": [ "Transactions" ], "summary": "Transaction volume breakdown", "description": "Volume + count grouped by tag or type, with the same filters as the list.", "operationId": "get_transactions_breakdown_api_v1_transactions_breakdown_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "groupBy", "in": "query", "required": true, "schema": { "$ref": "#/components/schemas/TransactionGroupBy", "description": "Group by tag or type" }, "description": "Group by tag or type" }, { "name": "type", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated transaction types", "title": "Type" }, "description": "Comma-separated transaction types" }, { "name": "incomeOnly", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Incomeonly" } }, { "name": "tag", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated tags", "title": "Tag" }, "description": "Comma-separated tags" }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated unified statuses", "title": "Status" }, "description": "Comma-separated unified statuses" }, { "name": "contactId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated contact UUIDs", "title": "Contactid" }, "description": "Comma-separated contact UUIDs" }, { "name": "bank_account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated bank account UUIDs", "title": "Bank Account Id" }, "description": "Comma-separated bank account UUIDs" }, { "name": "bankAccountId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated bank account UUIDs", "title": "Bankaccountid" }, "description": "Comma-separated bank account UUIDs" }, { "name": "cardId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated Card UUIDs", "title": "Cardid" }, "description": "Comma-separated Card UUIDs" }, { "name": "fromDate", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Fromdate" } }, { "name": "toDate", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Todate" } }, { "name": "asOf", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "description": "Reporting-date cutoff (YYYY-MM-DD). Caps results at the end of that day; ignored when toDate is set.", "title": "Asof" }, "description": "Reporting-date cutoff (YYYY-MM-DD). Caps results at the end of that day; ignored when toDate is set." }, { "name": "hasInvoice", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "True → only transactions linked to an invoice; False → only those without one; omitted → no filter.", "title": "Hasinvoice" }, "description": "True → only transactions linked to an invoice; False → only those without one; omitted → no filter." }, { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.", "title": "Q" }, "description": "Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored." }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransactionBreakdownResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transactions/breakdown/series": { "get": { "tags": [ "Transactions" ], "summary": "Transaction volume breakdown over time", "description": "Volume + count grouped by tag or type, split into time buckets across the fromDate..toDate range. Granularity is auto-picked: >6 months → month, >30 days → week, otherwise day. Empty periods are returned as zero-filled buckets so the frontend gets a complete x-axis. Same filter set as /transactions and /transactions/breakdown. `fromDate` and `toDate` are required.", "operationId": "get_transactions_breakdown_series_api_v1_transactions_breakdown_series_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "groupBy", "in": "query", "required": true, "schema": { "$ref": "#/components/schemas/TransactionGroupBy", "description": "Group by tag or type" }, "description": "Group by tag or type" }, { "name": "type", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated transaction types", "title": "Type" }, "description": "Comma-separated transaction types" }, { "name": "incomeOnly", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Incomeonly" } }, { "name": "tag", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated tags", "title": "Tag" }, "description": "Comma-separated tags" }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated unified statuses", "title": "Status" }, "description": "Comma-separated unified statuses" }, { "name": "contactId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated contact UUIDs", "title": "Contactid" }, "description": "Comma-separated contact UUIDs" }, { "name": "bank_account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated bank account UUIDs", "title": "Bank Account Id" }, "description": "Comma-separated bank account UUIDs" }, { "name": "bankAccountId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated bank account UUIDs", "title": "Bankaccountid" }, "description": "Comma-separated bank account UUIDs" }, { "name": "cardId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated Card UUIDs", "title": "Cardid" }, "description": "Comma-separated Card UUIDs" }, { "name": "fromDate", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Fromdate" } }, { "name": "toDate", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Todate" } }, { "name": "asOf", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "description": "Reporting-date cutoff (YYYY-MM-DD). Caps results at the end of that day; ignored when toDate is set.", "title": "Asof" }, "description": "Reporting-date cutoff (YYYY-MM-DD). Caps results at the end of that day; ignored when toDate is set." }, { "name": "hasInvoice", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "True → only transactions linked to an invoice; False → only those without one; omitted → no filter.", "title": "Hasinvoice" }, "description": "True → only transactions linked to an invoice; False → only those without one; omitted → no filter." }, { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.", "title": "Q" }, "description": "Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored." }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransactionBreakdownSeriesResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transactions/export": { "get": { "tags": [ "Transactions" ], "summary": "Export transactions", "description": "Export transactions as CSV or XLSX file.", "operationId": "export_transactions_api_v1_transactions_export_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "format", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/TransactionExportFormat", "default": "csv" } }, { "name": "scope", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/TransactionExportScope" }, { "type": "null" } ], "description": "Statement scope: all, one bank account, fiat only, or crypto only. scope=bank requires one bankAccountId. Range uses fromDate/toDate.", "title": "Scope" }, "description": "Statement scope: all, one bank account, fiat only, or crypto only. scope=bank requires one bankAccountId. Range uses fromDate/toDate." }, { "name": "type", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated transaction types", "title": "Type" }, "description": "Comma-separated transaction types" }, { "name": "incomeOnly", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Incomeonly" } }, { "name": "tag", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated tags", "title": "Tag" }, "description": "Comma-separated tags" }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated unified statuses", "title": "Status" }, "description": "Comma-separated unified statuses" }, { "name": "contactId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated contact UUIDs", "title": "Contactid" }, "description": "Comma-separated contact UUIDs" }, { "name": "bank_account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated bank account UUIDs", "title": "Bank Account Id" }, "description": "Comma-separated bank account UUIDs" }, { "name": "bankAccountId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated bank account UUIDs", "title": "Bankaccountid" }, "description": "Comma-separated bank account UUIDs" }, { "name": "cardId", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Comma-separated Card UUIDs", "title": "Cardid" }, "description": "Comma-separated Card UUIDs" }, { "name": "fromDate", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Fromdate" } }, { "name": "toDate", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Todate" } }, { "name": "asOf", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "description": "Reporting-date cutoff (YYYY-MM-DD). Caps results at the end of that day; ignored when toDate is set.", "title": "Asof" }, "description": "Reporting-date cutoff (YYYY-MM-DD). Caps results at the end of that day; ignored when toDate is set." }, { "name": "hasInvoice", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "description": "True → only transactions linked to an invoice; False → only those without one; omitted → no filter.", "title": "Hasinvoice" }, "description": "True → only transactions linked to an invoice; False → only those without one; omitted → no filter." }, { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored.", "title": "Q" }, "description": "Free-text search across description, merchant, tag, hash/wallet, contact name, counterparty user, invoice contractor, IBAN, and exact amount. Min 2 chars; values shorter are ignored." }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transactions/export/account_confirmation/{bank_id}": { "get": { "tags": [ "Exports" ], "summary": "Download account confirmation PDF", "description": "Generate and return account confirmation (PDF or XLSX) for a Bank row.", "operationId": "get_account_confirmation_pdf_package_alias_api_v1_transactions_export_account_confirmation__bank_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "bank_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Bank Id" } }, { "name": "format", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/DocumentExportFormat", "default": "pdf" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Bank not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transactions/export/account_statement/{bank_id}": { "get": { "tags": [ "Exports" ], "summary": "Download account statement PDF", "description": "Return a generated statement, or the banking provider letter status when requested.", "operationId": "get_account_statement_pdf_package_alias_api_v1_transactions_export_account_statement__bank_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "bank_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Bank Id" } }, { "name": "period_start", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Period Start" } }, { "name": "period_end", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Period End" } }, { "name": "format", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/DocumentExportFormat", "default": "pdf" } }, { "name": "bank_letter", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Request a provider-issued the banking provider bank letter and return its status with a signed download URL when available.", "default": false, "title": "Bank Letter" }, "description": "Request a provider-issued the banking provider bank letter and return its status with a signed download URL when available." }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "404": { "description": "Bank not found" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transfer_requests": { "post": { "tags": [ "Transfer requests" ], "summary": "Ask the account's owners to approve a transfer", "description": "File a transfer for an acting seat on the paying account to authorize.\n\nThis is the path for a seat that may not move money itself: nothing is sent\nuntil an owner approves by signing the transfer.", "operationId": "file_transfer_request_api_v1_transfer_requests_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "Idempotency-Key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Idempotency-Key" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRequestCreate" } } } }, "responses": { "202": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRequestResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "get": { "tags": [ "Transfer requests" ], "summary": "Transfer requests I filed or must decide on", "operationId": "list_transfer_requests_api_v1_transfer_requests_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Limit" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "default": 0, "title": "Offset" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TransferRequestListItem" }, "title": "Response List Transfer Requests Api V1 Transfer Requests Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transfer_requests/{proposal_id}/approve": { "post": { "tags": [ "Transfer requests" ], "summary": "Record a request approved by signing it", "description": "The web app sends the transfer from the account's own wallet through the\nnormal flow, then posts the hash here: that report is both the approving\nvote and the execution receipt.", "operationId": "approve_transfer_request_api_v1_transfer_requests__proposal_id__approve_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "proposal_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Proposal Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRequestApproveRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRequestResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transfer_requests/{proposal_id}/decline": { "post": { "tags": [ "Transfer requests" ], "summary": "Refuse a transfer request", "operationId": "decline_transfer_request_api_v1_transfer_requests__proposal_id__decline_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "proposal_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Proposal Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRequestDeclineRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRequestResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/transfer_requests/{proposal_id}/withdraw": { "post": { "tags": [ "Transfer requests" ], "summary": "Withdraw a request I filed", "operationId": "withdraw_transfer_request_api_v1_transfer_requests__proposal_id__withdraw_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "proposal_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Proposal Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferRequestResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/user": { "get": { "tags": [ "User" ], "summary": "Get current user", "description": "Get the profile of the currently authenticated user.", "operationId": "get_current_user_api_v1_user_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "device-id", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Device-Id" } }, { "name": "device-type", "in": "header", "required": false, "schema": { "type": "string", "default": "ios", "title": "Device-Type" } }, { "name": "device-name", "in": "header", "required": false, "schema": { "type": "string", "default": "ios", "title": "Device-Name" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/user/contact": { "post": { "tags": [ "User" ], "summary": "Create contact", "description": "Create a new contact for the current user.", "operationId": "create_contact_api_v1_user_contact_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactCreateRequest" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/user/contact/bank/validate": { "post": { "tags": [ "User" ], "summary": "Prevalidate bank contact details", "description": "Validate bank identifiers before creating a contact.", "operationId": "validate_bank_contact_api_v1_user_contact_bank_validate_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankValidationRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankValidationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/user/contacts": { "get": { "tags": [ "User" ], "summary": "Get user contacts", "description": "Get all contacts for the current user.", "operationId": "get_contacts_api_v1_user_contacts_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 500, "minimum": 1, "default": 100, "title": "Limit" } }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "default": 0, "title": "Offset" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactListResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/user/contacts/{contact_id}": { "patch": { "tags": [ "User" ], "summary": "Rename or complete a contact", "description": "Renames a contact and fills in details it is still missing (address, relationship, BIC, bank address). Values already stored are kept as they are, and whatever the payout providers keep about the recipient is updated on their side too. Use this instead of deleting and re-creating a contact to add a field — a re-created contact is a new row, and the provider beneficiary registered for the original stays behind on it.", "operationId": "update_contact_api_v1_user_contacts__contact_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "contact_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Contact Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContactUpdateRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "User" ], "summary": "Delete contact", "description": "Delete a contact.", "operationId": "delete_contact_api_v1_user_contacts__contact_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "contact_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Contact Id" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/user/kyc": { "put": { "tags": [ "User" ], "summary": "Create or get current user", "description": "Create or update user profile data for KYC.", "operationId": "update_user_kyc_data_api_v1_user_kyc_put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserCreateRequest" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/v1/user/kyc/status": { "get": { "tags": [ "User" ], "summary": "Get KYC status", "description": "Check the current KYC verification status. Use provider=align for Align.", "operationId": "get_kyc_status_api_v1_user_kyc_status_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "provider", "in": "query", "required": false, "schema": { "$ref": "#/components/schemas/FiatProvider", "default": "swipelux" } }, { "name": "x-api-key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KycStatusResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } } }, "components": { "schemas": { "AccountBalancesResponse": { "properties": { "accountId": { "type": "string", "title": "Accountid" }, "chainId": { "type": "string", "title": "Chainid" }, "walletType": { "$ref": "#/components/schemas/WalletType" }, "balanceUsd": { "type": "number", "title": "Balanceusd" }, "rawBalance": { "type": "string", "title": "Rawbalance" }, "balanceByToken": { "additionalProperties": { "type": "string" }, "type": "object", "title": "Balancebytoken" }, "custodial": { "type": "boolean", "title": "Custodial", "default": false } }, "type": "object", "required": [ "accountId", "chainId", "walletType", "balanceUsd", "rawBalance", "balanceByToken" ], "title": "AccountBalancesResponse" }, "AchAccountInput": { "properties": { "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "accountType": { "type": "string", "enum": [ "ach", "fedwire" ], "title": "Accounttype", "default": "ach" }, "bankName": { "type": "string", "title": "Bankname", "default": "" }, "accountNumber": { "type": "string", "title": "Accountnumber" }, "routingNumber": { "type": "string", "title": "Routingnumber" }, "currency": { "type": "string", "title": "Currency", "default": "USD" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressInput" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] } }, "type": "object", "required": [ "accountHolderType", "accountNumber", "routingNumber" ], "title": "AchAccountInput", "description": "ACH bank contact input." }, "AerodromeRoutePayload": { "properties": { "from": { "type": "string", "title": "From" }, "to": { "type": "string", "title": "To" }, "stable": { "type": "boolean", "title": "Stable" }, "factory": { "type": "string", "title": "Factory" } }, "type": "object", "required": [ "from", "to", "stable", "factory" ], "title": "AerodromeRoutePayload", "description": "Persisted form of one Aerodrome path hop." }, "AerodromeSettlementPayload": { "properties": { "routes": { "items": { "$ref": "#/components/schemas/AerodromeRoutePayload" }, "type": "array", "title": "Routes" }, "amount_in": { "type": "string", "title": "Amount In" }, "amount_out_min": { "type": "string", "title": "Amount Out Min" }, "recipient": { "type": "string", "title": "Recipient" }, "token": { "type": "string", "title": "Token" }, "chain_id": { "type": "integer", "title": "Chain Id" }, "tick_spacing": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Tick Spacing" } }, "type": "object", "required": [ "routes", "amount_in", "amount_out_min", "recipient", "token", "chain_id" ], "title": "AerodromeSettlementPayload", "description": "Canonical Aerodrome path pinned when the pool is quoted." }, "AffiliatedToInfo": { "properties": { "userId": { "type": "string", "format": "uuid", "title": "Userid" }, "name": { "type": "string", "title": "Name" }, "email": { "type": "string", "title": "Email" }, "avatarUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Avatarurl" }, "role": { "anyOf": [ { "$ref": "#/components/schemas/TeamMemberRole" }, { "type": "null" } ] }, "fullAccess": { "type": "boolean", "title": "Fullaccess" } }, "type": "object", "required": [ "userId", "name", "email", "fullAccess" ], "title": "AffiliatedToInfo", "description": "The affiliate behind this account, as seen from ``GET /user``.\n\n``role`` is the affiliate's team seat on this account, or ``None`` when the\naffiliate merely referred it and holds no seat — that distinction is what\nseparates a partner-managed company from a plain referral. ``full_access``\nmirrors the same seat: only an ``owner`` shares ownership of the account." }, "AlignAccountHolderType": { "type": "string", "enum": [ "individual", "business" ], "title": "AlignAccountHolderType", "description": "Account holder type." }, "AlignSettlementPayload": { "properties": { "destination_address": { "type": "string", "title": "Destination Address" } }, "type": "object", "required": [ "destination_address" ], "title": "AlignSettlementPayload", "description": "Canonical Align destination selected at quote time." }, "AlignTransferPurpose": { "type": "string", "enum": [ "charity", "commercial_investment", "corporate_card", "credit_card", "dividend", "family", "financial_services", "good_sold", "goods_bought", "government", "insurance", "intergroup_transfer", "intra_group_dividends", "information_technology", "leasing", "loan_charges", "merchant_settlement", "mobile_wallet", "none", "non_resident_transfer_between_accounts", "pension", "personal_expenses", "prepaid_cards", "professional", "rental", "resident_transfer_between_accounts", "salaries", "telecommunications", "travel", "utility_bill" ], "title": "AlignTransferPurpose", "description": "Transfer purpose for offramp transfers." }, "AppMeResponse": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "email": { "type": "string", "title": "Email" }, "balance": { "type": "number", "title": "Balance" }, "spendLimit": { "type": "number", "title": "Spendlimit" }, "appId": { "type": "string", "format": "uuid", "title": "Appid" }, "appName": { "type": "string", "title": "Appname" }, "scope": { "items": { "$ref": "#/components/schemas/RouteScope" }, "type": "array", "title": "Scope", "default": [] } }, "type": "object", "required": [ "email", "balance", "spendLimit", "appId", "appName" ], "title": "AppMeResponse", "description": "Everything an API-key client needs to know about itself in one call.\n\nReturned by ``GET /apps/me``. Avoids the older multi-step dance of\n``GET /user`` + ``GET /apps/{id}`` + ``GET /balance`` for callers (e.g.\nthe CLI) that only have an ``X-Api-Key`` and want to introspect." }, "BalancesResponse": { "properties": { "accounts": { "items": { "$ref": "#/components/schemas/AccountBalancesResponse" }, "type": "array", "title": "Accounts" }, "evmAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Evmaddress" }, "privyAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Privyaddress" } }, "type": "object", "required": [ "accounts" ], "title": "BalancesResponse", "description": "Response with wallet balances." }, "BankActivateRailError": { "properties": { "statusCode": { "type": "integer", "title": "Statuscode" }, "message": { "type": "string", "title": "Message" }, "detail": { "anyOf": [ {}, { "type": "null" } ], "title": "Detail" } }, "type": "object", "required": [ "statusCode", "message" ], "title": "BankActivateRailError", "description": "Per-rail bulk activation error." }, "BankActivateRailResult": { "properties": { "rail": { "$ref": "#/components/schemas/BankRail" }, "ok": { "type": "boolean", "title": "Ok" }, "bank": { "anyOf": [ { "$ref": "#/components/schemas/BankResponse" }, { "type": "null" } ] }, "error": { "anyOf": [ { "$ref": "#/components/schemas/BankActivateRailError" }, { "type": "null" } ] } }, "type": "object", "required": [ "rail", "ok" ], "title": "BankActivateRailResult", "description": "Per-rail bulk activation result." }, "BankActivateRailsRequest": { "properties": { "rails": { "items": { "$ref": "#/components/schemas/BankRail" }, "type": "array", "title": "Rails" } }, "type": "object", "required": [ "rails" ], "title": "BankActivateRailsRequest", "description": "Bulk bank activation request." }, "BankActivateRailsResponse": { "properties": { "results": { "items": { "$ref": "#/components/schemas/BankActivateRailResult" }, "type": "array", "title": "Results" } }, "type": "object", "required": [ "results" ], "title": "BankActivateRailsResponse", "description": "Bulk bank activation response." }, "BankAddressDetails": { "properties": { "addressLine1": { "type": "string", "title": "Addressline1" }, "city": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "City" }, "state": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "State" }, "postalCode": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Postalcode" }, "country": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Country" } }, "type": "object", "required": [ "addressLine1" ], "title": "BankAddressDetails", "description": "The beneficiary bank's own address, kept apart from the holder's.\n\nRead/storage shape: only the street is guaranteed, because rows saved before\nthis was structured hold a single free-text line that validates into\n``address_line1`` alone. New input goes through BankAddressInput, which\nrequires everything the banking provider does." }, "BankAddressInput": { "properties": { "addressLine1": { "type": "string", "maxLength": 120, "minLength": 1, "title": "Addressline1" }, "city": { "type": "string", "maxLength": 80, "minLength": 1, "title": "City" }, "state": { "anyOf": [ { "type": "string", "maxLength": 80 }, { "type": "null" } ], "title": "State" }, "postalCode": { "anyOf": [ { "type": "string", "maxLength": 32 }, { "type": "null" } ], "title": "Postalcode" }, "country": { "type": "string", "maxLength": 3, "minLength": 2, "title": "Country" } }, "type": "object", "required": [ "addressLine1", "city", "country" ], "title": "BankAddressInput", "description": "What a client must provide for a bank address: everything the banking provider requires.\n\nthe banking provider caps the street at 120 and the city at 80; the country is what the\npayout carries in ``bankAddress.country`` (both ISO alpha-2 and alpha-3 are\naccepted there), though a payout prefers the BIC-derived one." }, "BankCapabilities": { "properties": { "memoSupported": { "type": "boolean", "title": "Memosupported" }, "minAmount": { "type": "number", "title": "Minamount" }, "memoLengthLimit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Memolengthlimit" }, "rails": { "items": { "$ref": "#/components/schemas/PayoutRailDetails" }, "type": "array", "title": "Rails" }, "supportedTokens": { "items": { "$ref": "#/components/schemas/DepositToken" }, "type": "array", "title": "Supportedtokens" } }, "type": "object", "required": [ "memoSupported", "minAmount", "rails" ], "title": "BankCapabilities", "description": "Payout capabilities of a bank rail, derived from static configuration." }, "BankFeatureStatus": { "type": "string", "enum": [ "enabled", "disabled", "on_request" ], "title": "BankFeatureStatus" }, "BankFeatures": { "properties": { "1pt_payin": { "$ref": "#/components/schemas/BankFeatureStatus", "default": "enabled" }, "3pt_payin": { "$ref": "#/components/schemas/BankFeatureStatus", "default": "enabled" }, "1pt_payout": { "$ref": "#/components/schemas/BankFeatureStatus", "default": "enabled" }, "3pt_payout": { "$ref": "#/components/schemas/BankFeatureStatus", "default": "enabled" } }, "type": "object", "title": "BankFeatures" }, "BankRail": { "type": "string", "enum": [ "uaefts_named-zand", "ach_pooled-hsbc", "ach_pooled-citi", "ach_named-citi", "ach_named-jpmorgan_chase", "ach_named-cfsb", "fedwire_pooled-hsbc", "fedwire_pooled-jpmorgan_chase", "fedwire_pooled-cfsb", "fedwire_named-hsbc", "fedwire_named-citi", "fedwire_named-jpmorgan_chase", "fedwire_named-cfsb", "sepa_pooled-zen", "sepa_named-zen", "sepa_named-banking_circle_dm", "pix_pooled-stark_bank", "spei_pooled-nvio_pagos", "pse_pooled-slx", "transfers_3_0_pooled-swipelux", "swift_named-zand", "swift_named-zenus", "ukfps_named-banking_circle", "swift_pooled-hsbc", "swift_named-hsbc", "ach_named-lead_bank", "swift_named-lead_bank", "wire_named", "swift_named-conduit", "sepa_pooled-due", "sepa_named-due", "ukfps_named-due", "uaefts_named-due", "ach_named-due", "fedwire_named-due", "swift_named-due", "pix_named-due", "spei_named-due" ], "title": "BankRail", "description": "Client-visible bank transfer route; provider identity lives separately." }, "BankRequestedRailSettings": { "properties": { "pooled": { "type": "boolean", "title": "Pooled", "default": false }, "named": { "type": "boolean", "title": "Named", "default": false }, "requestedAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Requestedat" } }, "type": "object", "title": "BankRequestedRailSettings", "description": "User interest in a bank rail group.\n\n``requested_at`` records when the user last requested this rail, so admin\nviews can show exactly when each rail was requested — the pooled/named\ndistinction is intentionally not timestamped separately (rail requests will\ndrop that split entirely in the future). Absent for opt-ins made before\ntimestamps were tracked." }, "BankRequestedRails": { "properties": { "us": { "$ref": "#/components/schemas/BankRequestedRailSettings" }, "swift": { "$ref": "#/components/schemas/BankRequestedRailSettings" }, "eu": { "$ref": "#/components/schemas/BankRequestedRailSettings" }, "uae": { "$ref": "#/components/schemas/BankRequestedRailSettings" }, "br": { "$ref": "#/components/schemas/BankRequestedRailSettings" }, "mx": { "$ref": "#/components/schemas/BankRequestedRailSettings" }, "co": { "$ref": "#/components/schemas/BankRequestedRailSettings" }, "ar": { "$ref": "#/components/schemas/BankRequestedRailSettings" }, "uk": { "$ref": "#/components/schemas/BankRequestedRailSettings" } }, "type": "object", "title": "BankRequestedRails", "description": "Rails the user is interested in opening." }, "BankRequestedSettings-Output": { "properties": { "rails": { "$ref": "#/components/schemas/BankRequestedRails" } }, "type": "object", "title": "BankRequestedSettings", "description": "User bank-rail interest settings." }, "BankResponse": { "properties": { "rail": { "$ref": "#/components/schemas/BankRail" }, "bankName": { "type": "string", "title": "Bankname" }, "country": { "type": "string", "title": "Country" }, "currency": { "type": "string", "title": "Currency" }, "type": { "$ref": "#/components/schemas/FiatPaymentType" }, "method": { "$ref": "#/components/schemas/FiatPaymentType" }, "methods": { "items": { "$ref": "#/components/schemas/FiatPaymentType" }, "type": "array", "title": "Methods" }, "pooled": { "type": "boolean", "title": "Pooled" }, "compliance": { "type": "integer", "title": "Compliance" }, "bankIcon": { "type": "string", "title": "Bankicon" }, "depositFee": { "type": "number", "title": "Depositfee" }, "feeBps": { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "title": "Feebps" }, "timeToOpen": { "$ref": "#/components/schemas/BankTimeToOpen" }, "status": { "$ref": "#/components/schemas/IBANStatus" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "ibanData": { "anyOf": [ { "$ref": "#/components/schemas/IBANAccountDetails-Output" }, { "$ref": "#/components/schemas/USExternalAccountDetails-Output" }, { "$ref": "#/components/schemas/SwiftAccountDetails-Output" }, { "$ref": "#/components/schemas/PixAccountDetails-Output" }, { "$ref": "#/components/schemas/LocalRailAccountDetails-Output" }, { "$ref": "#/components/schemas/ProviderUsdAccountDetails-Output" }, { "type": "null" } ], "title": "Ibandata" }, "features": { "$ref": "#/components/schemas/BankFeatures" }, "capabilities": { "$ref": "#/components/schemas/BankCapabilities" }, "depositToken": { "$ref": "#/components/schemas/DepositToken", "default": "USDC" }, "id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Id" }, "externalAccountId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Externalaccountid" }, "psp": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Psp" }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" } }, "type": "object", "required": [ "rail", "bankName", "country", "currency", "type", "method", "methods", "pooled", "compliance", "bankIcon", "depositFee", "feeBps", "timeToOpen", "status", "capabilities" ], "title": "BankResponse", "description": "Bank row as returned to clients.\n\nMerges static rail metadata (from BANK_INFO) with per-user state. For rails\nthe user hasn't activated yet, ``id`` / ``external_account_id`` / ``created_at``\nare ``None`` and ``status`` is ``not_started``." }, "BankTimeToOpen": { "type": "string", "enum": [ "<1 day", "1-2 days", "2-3 days", "5-7 days" ], "title": "BankTimeToOpen", "description": "Expected wait time before a bank rail becomes usable." }, "BankValidationRequest": { "properties": { "bankType": { "type": "string", "title": "Banktype" }, "country": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Country" }, "bankName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bankname" }, "iban": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iban" }, "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bic" }, "routingNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Routingnumber" }, "accountNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountnumber" }, "accountHolderName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholdername", "description": "Beneficiary name the contact will carry. Checked against the 22-character NACHA receiver-name limit on ach; ignored on every other rail." } }, "type": "object", "required": [ "bankType" ], "title": "BankValidationRequest", "description": "Request to prevalidate bank details before creating a contact." }, "BankValidationResponse": { "properties": { "ok": { "type": "boolean", "title": "Ok" }, "errors": { "items": { "type": "string" }, "type": "array", "title": "Errors" }, "warnings": { "items": { "type": "string" }, "type": "array", "title": "Warnings" }, "lookups": { "additionalProperties": true, "type": "object", "title": "Lookups" } }, "type": "object", "required": [ "ok" ], "title": "BankValidationResponse", "description": "Result of bank detail validation." }, "BanksListResponse": { "properties": { "banks": { "items": { "$ref": "#/components/schemas/BankResponse" }, "type": "array", "title": "Banks" }, "allOptions": { "items": { "$ref": "#/components/schemas/BankResponse" }, "type": "array", "title": "Alloptions" }, "rails": { "$ref": "#/components/schemas/BankRequestedRails" } }, "type": "object", "required": [ "banks", "rails" ], "title": "BanksListResponse", "description": "List bank rails plus user's requested rail preferences." }, "BatchContractInvoiceRequest": { "properties": { "contractId": { "type": "string", "format": "uuid", "title": "Contractid" }, "items": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "minItems": 1, "title": "Items" }, "period": { "type": "integer", "minimum": 0.0, "title": "Period" }, "memo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Memo" }, "finalize": { "type": "boolean", "title": "Finalize", "default": false } }, "type": "object", "required": [ "contractId", "items", "period" ], "title": "BatchContractInvoiceRequest", "description": "Per-contract invoice options for batch invoicing.\n\nA call without ``finalize`` creates the period invoice as a DRAFT (or\nupdates its items if a DRAFT already exists). Both the client and the\ncontractor may edit a DRAFT. Setting ``finalize=True`` additionally moves\nthe invoice to SENT, generates the PDF and emails the client — only the\nclient (contract owner) is allowed to finalize." }, "BatchInvoiceResult": { "properties": { "contractId": { "type": "string", "format": "uuid", "title": "Contractid" }, "counterpartyId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Counterpartyid" }, "periodNumber": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Periodnumber" }, "status": { "type": "string", "title": "Status" }, "invoice": { "anyOf": [ { "$ref": "#/components/schemas/InvoiceResponse" }, { "type": "null" } ] }, "detail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Detail" } }, "type": "object", "required": [ "contractId", "status" ], "title": "BatchInvoiceResult" }, "BatchInvoicingRequest": { "items": { "$ref": "#/components/schemas/BatchContractInvoiceRequest" }, "type": "array", "minItems": 1, "title": "BatchInvoicingRequest", "description": "Generate invoices for multiple contracts." }, "BatchInvoicingResponse": { "properties": { "results": { "items": { "$ref": "#/components/schemas/BatchInvoiceResult" }, "type": "array", "title": "Results" } }, "type": "object", "title": "BatchInvoicingResponse" }, "BillingCycle": { "type": "string", "enum": [ "once", "weekly", "biweekly", "monthly", "quarterly", "yearly" ], "title": "BillingCycle", "description": "Calendar cadence a contract bills on." }, "BillingCycleInput": { "properties": { "period": { "$ref": "#/components/schemas/BillingCycle", "default": "once" }, "activationAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Activationat" }, "expirationAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Expirationat" }, "firstPaymentAt": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Firstpaymentat" }, "endsOn": { "anyOf": [ { "type": "string", "maxLength": 20 }, { "type": "null" } ], "title": "Endson" } }, "type": "object", "title": "BillingCycleInput", "description": "The calendar schedule a contract bills on.\n\n``endsOn`` anchors the cycle: a day of month (``\"1\"..\"31\"`` or ``\"last\"``)\nfor monthly/quarterly/yearly, a weekday name for weekly/biweekly. It is\nrejected for a one-time contract." }, "CardData": { "properties": { "nameOnCard": { "type": "string", "title": "Nameoncard" }, "paymentSystem": { "type": "string", "title": "Paymentsystem", "description": "Visa, Mastercard, etc." }, "lastFour": { "type": "string", "title": "Lastfour", "description": "Last 4 digits of card number" }, "expiryDate": { "type": "string", "title": "Expirydate", "description": "MM/YY format" }, "format": { "$ref": "#/components/schemas/CardFormat" }, "cardName": { "type": "string", "title": "Cardname", "description": "Display name like 'Visa **** 1234'" } }, "type": "object", "required": [ "nameOnCard", "paymentSystem", "lastFour", "expiryDate", "format", "cardName" ], "title": "CardData", "description": "Card display data (non-sensitive)." }, "CardDetailsResponse": { "properties": { "cardNumber": { "type": "string", "title": "Cardnumber", "description": "Full card number (PAN)" }, "cvv": { "type": "string", "title": "Cvv" }, "expiryDate": { "type": "string", "title": "Expirydate" } }, "type": "object", "required": [ "cardNumber", "cvv", "expiryDate" ], "title": "CardDetailsResponse", "description": "Sensitive card details." }, "CardFormat": { "type": "string", "enum": [ "virtual", "physical" ], "title": "CardFormat", "description": "Card format." }, "CardLimit": { "properties": { "dailyLimit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Dailylimit", "description": "Daily spending limit (-1 for unlimited)" }, "dailyUsage": { "type": "number", "title": "Dailyusage", "description": "Amount spent today", "default": 0 }, "monthlyLimit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Monthlylimit", "description": "Monthly spending limit (-1 for unlimited)" }, "monthlyUsage": { "type": "number", "title": "Monthlyusage", "description": "Amount spent this month", "default": 0 }, "lifetimeLimit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Lifetimelimit", "description": "Lifetime spending limit (-1 for unlimited)" }, "lifetimeUsage": { "type": "number", "title": "Lifetimeusage", "description": "Total amount spent", "default": 0 }, "currency": { "type": "string", "title": "Currency", "default": "EUR" } }, "type": "object", "title": "CardLimit", "description": "Card spending limit." }, "CardResponse": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "externalId": { "type": "string", "title": "Externalid", "description": "Provider-specific card identifier." }, "walletAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Walletaddress", "description": "Linked wallet address" }, "status": { "$ref": "#/components/schemas/CardStatus", "default": "pending" }, "limit": { "anyOf": [ { "$ref": "#/components/schemas/CardLimit" }, { "type": "null" } ] }, "cardData": { "anyOf": [ { "$ref": "#/components/schemas/CardData" }, { "type": "null" } ] }, "createdAt": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Createdat" }, "activated": { "type": "boolean", "title": "Activated", "description": "True if card details have been revealed and cached", "default": false }, "billingAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "dailySpend": { "type": "number", "title": "Dailyspend", "description": "Total spent today on this card (from fiat_transfers)", "default": 0 }, "label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Label", "description": "User-defined card label/nickname" } }, "type": "object", "required": [ "id", "externalId" ], "title": "CardResponse", "description": "Card response - universal format for any provider." }, "CardRevealRequest": { "properties": { "messageSignature": { "type": "string", "title": "Messagesignature", "description": "Wallet signature of confirmation message" }, "nonce": { "type": "integer", "title": "Nonce", "description": "Unix timestamp used in the signed message (valid 5 min)" } }, "type": "object", "required": [ "messageSignature", "nonce" ], "title": "CardRevealRequest", "description": "Request to reveal card details. Requires wallet signature." }, "CardStatus": { "type": "string", "enum": [ "pending", "active", "blocked", "closed" ], "title": "CardStatus", "description": "Card status." }, "CardsListResponse": { "properties": { "cards": { "items": { "$ref": "#/components/schemas/CardResponse" }, "type": "array", "title": "Cards" }, "total": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Total" }, "created": { "type": "boolean", "title": "Created", "default": false }, "kycStatus": { "$ref": "#/components/schemas/KycStatus", "default": "not_started" }, "phoneVerified": { "type": "boolean", "title": "Phoneverified", "default": false } }, "type": "object", "required": [ "cards" ], "title": "CardsListResponse", "description": "Paginated list of cards." }, "CardsPreApproveResponse": { "properties": { "kycUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Kycurl" }, "kycStatus": { "$ref": "#/components/schemas/KycStatus", "default": "not_started" }, "requirePhoneNumber": { "type": "boolean", "title": "Requirephonenumber", "default": false }, "requireAddress": { "type": "boolean", "title": "Requireaddress", "default": false } }, "type": "object", "title": "CardsPreApproveResponse", "description": "Pre-flight info for issuing the card provider cards." }, "ChainCatalogResponse": { "properties": { "tokens": { "items": { "$ref": "#/components/schemas/TokenDefResponse" }, "type": "array", "title": "Tokens" }, "chains": { "items": { "$ref": "#/components/schemas/ChainConfigResponse" }, "type": "array", "title": "Chains" } }, "type": "object", "required": [ "tokens", "chains" ], "title": "ChainCatalogResponse", "description": "The whole catalog, as clients mirror it." }, "ChainConfigResponse": { "properties": { "code": { "type": "string", "title": "Code" }, "displayName": { "type": "string", "title": "Displayname" }, "internalId": { "type": "integer", "title": "Internalid" }, "evmChainId": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Evmchainid" }, "aliases": { "items": { "type": "string" }, "type": "array", "title": "Aliases", "default": [] }, "explorerTxUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Explorertxurl" }, "oneclick": { "type": "boolean", "title": "Oneclick", "default": true }, "lifi": { "type": "boolean", "title": "Lifi", "default": false }, "cowswapNetwork": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cowswapnetwork" }, "aerodrome": { "type": "boolean", "title": "Aerodrome", "default": false }, "tokens": { "items": { "$ref": "#/components/schemas/TokenConfigResponse" }, "type": "array", "title": "Tokens", "default": [] } }, "type": "object", "required": [ "code", "displayName", "internalId" ], "title": "ChainConfigResponse", "description": "One chain: canonical identity, per-provider identifiers, tokens." }, "ClientSignature": { "properties": { "signature": { "type": "string", "title": "Signature" }, "scheme": { "$ref": "#/components/schemas/SigningScheme", "default": "eip1271" }, "txHash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Txhash" } }, "type": "object", "required": [ "signature" ], "title": "ClientSignature", "description": "Client's answer to a signing request, sent with ``/quote/submit``." }, "CompanyDueDiligenceData-Input": { "properties": { "entityType": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entitytype" }, "entityTypeDescription": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entitytypedescription" }, "incorporationDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Incorporationdate" }, "industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Industry" }, "websites": { "items": { "type": "string" }, "type": "array", "title": "Websites" }, "operatingCountries": { "anyOf": [ { "items": { "$ref": "#/components/schemas/CountryCode" }, "type": "array" }, { "type": "null" } ], "title": "Operatingcountries" }, "expectedMonthlyVolumeUsd": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Expectedmonthlyvolumeusd" }, "estimatedAnnualRevenue": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Estimatedannualrevenue" }, "hasUsBank": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Hasusbank" }, "deniedUsBank": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Deniedusbank" }, "hasPep": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Haspep" }, "bizAdverse": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Bizadverse" }, "ownersAdverse": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Ownersadverse" }, "publicListed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Publiclisted" }, "txPerMonth": { "anyOf": [ { "$ref": "#/components/schemas/FiatTransactionCount" }, { "type": "null" } ] }, "usesBlockchain": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Usesblockchain" }, "revenueCovers": { "anyOf": [ { "$ref": "#/components/schemas/RevenueCoverage" }, { "type": "null" } ] }, "institutionalInvestors": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Institutionalinvestors" }, "isRegulated": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Isregulated" } }, "type": "object", "title": "CompanyDueDiligenceData" }, "CompanyDueDiligenceData-Output": { "properties": { "entityType": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entitytype" }, "entityTypeDescription": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entitytypedescription" }, "incorporationDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Incorporationdate" }, "industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Industry" }, "websites": { "items": { "type": "string" }, "type": "array", "title": "Websites" }, "operatingCountries": { "anyOf": [ { "items": { "$ref": "#/components/schemas/CountryCode" }, "type": "array" }, { "type": "null" } ], "title": "Operatingcountries" }, "expectedMonthlyVolumeUsd": { "anyOf": [ { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Expectedmonthlyvolumeusd" }, "estimatedAnnualRevenue": { "anyOf": [ { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Estimatedannualrevenue" }, "hasUsBank": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Hasusbank" }, "deniedUsBank": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Deniedusbank" }, "hasPep": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Haspep" }, "bizAdverse": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Bizadverse" }, "ownersAdverse": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Ownersadverse" }, "publicListed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Publiclisted" }, "txPerMonth": { "anyOf": [ { "$ref": "#/components/schemas/FiatTransactionCount" }, { "type": "null" } ] }, "usesBlockchain": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Usesblockchain" }, "revenueCovers": { "anyOf": [ { "$ref": "#/components/schemas/RevenueCoverage" }, { "type": "null" } ] }, "institutionalInvestors": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Institutionalinvestors" }, "isRegulated": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Isregulated" } }, "type": "object", "title": "CompanyDueDiligenceData" }, "ContactCreateRequest": { "properties": { "name": { "type": "string", "maxLength": 200, "minLength": 1, "title": "Name", "default": "" }, "currency": { "anyOf": [ { "type": "string", "maxLength": 4, "minLength": 3 }, { "type": "null" } ], "title": "Currency", "description": "Currency override" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email" }, "crypto": { "anyOf": [ { "$ref": "#/components/schemas/ContactCryptoInput" }, { "type": "null" } ] }, "account": { "anyOf": [ { "oneOf": [ { "$ref": "#/components/schemas/OnchainAccountInput" }, { "$ref": "#/components/schemas/EmailAccountInput" }, { "$ref": "#/components/schemas/SepaAccountInput" }, { "$ref": "#/components/schemas/SwiftAccountInput" }, { "$ref": "#/components/schemas/AchAccountInput" }, { "$ref": "#/components/schemas/UaeAccountInput" }, { "$ref": "#/components/schemas/UkFpsAccountInput" }, { "$ref": "#/components/schemas/PixAccountInput" } ], "discriminator": { "propertyName": "accountType", "mapping": { "ach": "#/components/schemas/AchAccountInput", "email": "#/components/schemas/EmailAccountInput", "fedwire": "#/components/schemas/AchAccountInput", "onchain": "#/components/schemas/OnchainAccountInput", "pix": "#/components/schemas/PixAccountInput", "sepa": "#/components/schemas/SepaAccountInput", "swift": "#/components/schemas/SwiftAccountInput", "uaefts": "#/components/schemas/UaeAccountInput", "ukfps": "#/components/schemas/UkFpsAccountInput" } } }, { "type": "null" } ], "title": "Account", "description": "Account details" }, "iban": { "anyOf": [ { "$ref": "#/components/schemas/IBANAccountDetails-Input" }, { "$ref": "#/components/schemas/USExternalAccountDetails-Input" }, { "$ref": "#/components/schemas/SwiftAccountDetails-Input" }, { "$ref": "#/components/schemas/PixAccountDetails-Input" }, { "$ref": "#/components/schemas/LocalRailAccountDetails-Input" }, { "$ref": "#/components/schemas/ProviderUsdAccountDetails-Input" }, { "type": "null" } ], "title": "Iban", "description": "Bank account details in the same format as /banks ibanData" }, "address": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] } }, "type": "object", "title": "ContactCreateRequest", "description": "Request to create a contact." }, "ContactCryptoInput": { "properties": { "chain": { "$ref": "#/components/schemas/OneClickChain" }, "token": { "type": "string", "title": "Token" }, "address": { "type": "string", "title": "Address" } }, "type": "object", "required": [ "chain", "token", "address" ], "title": "ContactCryptoInput", "description": "Crypto contact input." }, "ContactCryptoResponse": { "properties": { "chain": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Chain" }, "token": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Token" }, "address": { "type": "string", "title": "Address" } }, "type": "object", "required": [ "address" ], "title": "ContactCryptoResponse", "description": "Crypto payment details for contact." }, "ContactLinkedUserResponse": { "properties": { "avatar": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Avatar" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" } }, "type": "object", "title": "ContactLinkedUserResponse", "description": "Linked HEVN user preview for contact." }, "ContactListResponse": { "properties": { "contacts": { "items": { "$ref": "#/components/schemas/ContactResponse" }, "type": "array", "title": "Contacts" }, "total": { "type": "integer", "title": "Total" } }, "type": "object", "required": [ "contacts", "total" ], "title": "ContactListResponse", "description": "List of contacts response." }, "ContactRelationship": { "type": "string", "enum": [ "employee", "contractor", "vendor", "subsidiary", "merchant", "customer", "landlord", "family", "other", "self" ], "title": "ContactRelationship", "description": "How a payout contact relates to the user.\n\nThe vocabulary mirrors Swipelux's recipient relationships so the common\nvalues project onto their API unchanged, but this is our own domain type:\n``SELF`` marks a first-party payout to the user's own account at another\nbank and has no Swipelux counterpart. Providers own that projection — see\n``SwipeluxRecipients._recipient_relationship`` — so nothing here depends on\na provider, and no provider enum has to carry a value it cannot accept." }, "ContactResponse": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "userId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Userid" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email" }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" }, "address": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "iban": { "anyOf": [ { "$ref": "#/components/schemas/IBANAccountDetails-Output" }, { "$ref": "#/components/schemas/USExternalAccountDetails-Output" }, { "$ref": "#/components/schemas/SwiftAccountDetails-Output" }, { "$ref": "#/components/schemas/PixAccountDetails-Output" }, { "$ref": "#/components/schemas/LocalRailAccountDetails-Output" }, { "$ref": "#/components/schemas/ProviderUsdAccountDetails-Output" }, { "type": "null" } ], "title": "Iban" }, "crypto": { "anyOf": [ { "$ref": "#/components/schemas/ContactCryptoResponse" }, { "type": "null" } ] }, "user": { "anyOf": [ { "$ref": "#/components/schemas/ContactLinkedUserResponse" }, { "type": "null" } ] } }, "type": "object", "required": [ "id", "name", "createdAt" ], "title": "ContactResponse", "description": "Contact response with full structure for transfer." }, "ContactUpdateRequest": { "properties": { "name": { "anyOf": [ { "type": "string", "maxLength": 200, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "address": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bic", "description": "BIC for an IBAN contact saved without one — Align requires it on IBAN beneficiaries. Ignored when the contact already has a BIC." }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ], "description": "The beneficiary bank's own address (street + city), required by the banking provider payouts. Parts the contact already carries are kept; missing ones are filled, so a legacy free-text address can gain its city." } }, "type": "object", "title": "ContactUpdateRequest", "description": "Request to update a contact.\n\nThe display name is freely mutable. Requisites, address and relationship\nare *fill-only*: a field that is already set on the contact keeps its\nvalue, and only the still-empty ones are filled in. Recreating the contact\nto add a missing field is what produced duplicate rows — the requisites\nidentity changes with the added field, so the upsert misses the original\nand its provider account ids are stranded on the deleted row." }, "ContactWalletResponse": { "properties": { "address": { "type": "string", "title": "Address" }, "chainId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Chainid" }, "currency": { "type": "string", "title": "Currency", "default": "EUR" }, "internal": { "type": "boolean", "title": "Internal", "default": false } }, "type": "object", "required": [ "address" ], "title": "ContactWalletResponse", "description": "Wallet payment method block used by invoice/payment method schemas." }, "ContractDocument": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "fileName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Filename" }, "documentType": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Documenttype" }, "downloadLink": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Downloadlink" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" } }, "type": "object", "required": [ "id", "createdAt" ], "title": "ContractDocument", "description": "A document attached to a contract." }, "ContractLastInvoice": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "contractId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Contractid" }, "invoiceNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Invoicenumber" }, "amount": { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "title": "Amount" }, "currency": { "$ref": "#/components/schemas/Currency" }, "status": { "type": "string", "title": "Status" }, "issuedDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Issueddate" }, "dueDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Duedate" }, "paidAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Paidat" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" } }, "type": "object", "required": [ "id", "amount", "currency", "status", "createdAt" ], "title": "ContractLastInvoice", "description": "Flat last-invoice data embedded in contract responses." }, "ContractLineItem-Input": { "properties": { "name": { "type": "string", "maxLength": 300, "minLength": 1, "title": "Name" }, "quantity": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Quantity", "default": "1" }, "price": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Price", "default": "0" } }, "type": "object", "required": [ "name" ], "title": "ContractLineItem", "description": "One billable line of a contract." }, "ContractLineItem-Output": { "properties": { "name": { "type": "string", "maxLength": 300, "minLength": 1, "title": "Name" }, "quantity": { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "title": "Quantity", "default": "1" }, "price": { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "title": "Price", "default": "0" } }, "type": "object", "required": [ "name" ], "title": "ContractLineItem", "description": "One billable line of a contract." }, "ContractListResponse": { "properties": { "contracts": { "items": { "$ref": "#/components/schemas/ContractResponse" }, "type": "array", "title": "Contracts" } }, "type": "object", "required": [ "contracts" ], "title": "ContractListResponse", "description": "List of contracts." }, "ContractParty-Output": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email" }, "displayName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Displayname" }, "firstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Firstname" }, "lastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lastname" }, "entityName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entityname" }, "avatarUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Avatarurl" }, "isBusiness": { "type": "boolean", "title": "Isbusiness", "default": false }, "address": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] } }, "type": "object", "required": [ "id" ], "title": "ContractParty", "description": "Minimal user data embedded in contract responses." }, "ContractRateType": { "type": "string", "enum": [ "fixed", "hourly" ], "title": "ContractRateType", "description": "How a contractor's fee is computed." }, "ContractResponse": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "clientId": { "type": "string", "format": "uuid", "title": "Clientid" }, "contractorId": { "type": "string", "format": "uuid", "title": "Contractorid" }, "creatorId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Creatorid" }, "client": { "anyOf": [ { "$ref": "#/components/schemas/ContractParty-Output" }, { "type": "null" } ] }, "contractor": { "anyOf": [ { "$ref": "#/components/schemas/ContractParty-Output" }, { "type": "null" } ] }, "label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Label" }, "type": { "$ref": "#/components/schemas/ContractType" }, "status": { "$ref": "#/components/schemas/ContractStatus" }, "terms": { "$ref": "#/components/schemas/ContractTermsInput-Output" }, "clientAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "contractorAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "amount": { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "title": "Amount" }, "currency": { "$ref": "#/components/schemas/Currency" }, "billing": { "$ref": "#/components/schemas/BillingCycleInput" }, "schedule": { "anyOf": [ { "$ref": "#/components/schemas/ContractScheduleResponse" }, { "type": "null" } ] }, "documents": { "items": { "$ref": "#/components/schemas/ContractDocument" }, "type": "array", "title": "Documents" }, "priorityMethods": { "items": { "$ref": "#/components/schemas/TransactionType" }, "type": "array", "title": "Prioritymethods" }, "paymentMethods": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Paymentmethods" }, "lastInvoice": { "anyOf": [ { "$ref": "#/components/schemas/ContractLastInvoice" }, { "type": "null" } ] }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" }, "updatedAt": { "type": "string", "format": "date-time", "title": "Updatedat" } }, "type": "object", "required": [ "id", "clientId", "contractorId", "type", "status", "terms", "amount", "currency", "billing", "createdAt", "updatedAt" ], "title": "ContractResponse", "description": "A recurring billing agreement." }, "ContractSchedulePeriod": { "properties": { "index": { "type": "integer", "title": "Index" }, "periodStart": { "type": "string", "format": "date", "title": "Periodstart" }, "periodEnd": { "type": "string", "format": "date", "title": "Periodend" }, "dueDate": { "type": "string", "format": "date", "title": "Duedate" } }, "type": "object", "required": [ "index", "periodStart", "periodEnd", "dueDate" ], "title": "ContractSchedulePeriod", "description": "One billing occurrence, as the client renders it." }, "ContractScheduleResponse": { "properties": { "period": { "$ref": "#/components/schemas/BillingCycle" }, "endsOn": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Endson" }, "firstPaymentAt": { "type": "string", "format": "date", "title": "Firstpaymentat" }, "totalPeriods": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Totalperiods" }, "currentPeriod": { "type": "integer", "title": "Currentperiod" }, "periods": { "items": { "$ref": "#/components/schemas/ContractSchedulePeriod" }, "type": "array", "title": "Periods" } }, "type": "object", "required": [ "period", "firstPaymentAt", "currentPeriod", "periods" ], "title": "ContractScheduleResponse", "description": "The resolved calendar schedule of a contract." }, "ContractStatus": { "type": "string", "enum": [ "active", "paused", "completed", "cancelled" ], "title": "ContractStatus", "description": "Contract status. A contract is live the moment it is created." }, "ContractTermsInput-Input": { "properties": { "currency": { "$ref": "#/components/schemas/Currency", "default": "USD" }, "rateType": { "$ref": "#/components/schemas/ContractRateType", "default": "fixed" }, "items": { "items": { "$ref": "#/components/schemas/ContractLineItem-Input" }, "type": "array", "title": "Items" }, "scope": { "anyOf": [ { "type": "string", "maxLength": 8000 }, { "type": "null" } ], "title": "Scope" }, "jobTitle": { "anyOf": [ { "type": "string", "maxLength": 300 }, { "type": "null" } ], "title": "Jobtitle" }, "paymentTerms": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "Paymentterms" } }, "type": "object", "title": "ContractTermsInput", "description": "Commercial terms a client sets on a contract." }, "ContractTermsInput-Output": { "properties": { "currency": { "$ref": "#/components/schemas/Currency", "default": "USD" }, "rateType": { "$ref": "#/components/schemas/ContractRateType", "default": "fixed" }, "items": { "items": { "$ref": "#/components/schemas/ContractLineItem-Output" }, "type": "array", "title": "Items" }, "scope": { "anyOf": [ { "type": "string", "maxLength": 8000 }, { "type": "null" } ], "title": "Scope" }, "jobTitle": { "anyOf": [ { "type": "string", "maxLength": 300 }, { "type": "null" } ], "title": "Jobtitle" }, "paymentTerms": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "Paymentterms" } }, "type": "object", "title": "ContractTermsInput", "description": "Commercial terms a client sets on a contract." }, "ContractType": { "type": "string", "enum": [ "service", "employment", "nda", "contractor", "vendor", "msa", "other" ], "title": "ContractType", "description": "What the recurring agreement is for. A label only — it drives no logic." }, "CorporateAuthorityDocumentIds": { "properties": { "authorizationToActDocumentId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Authorizationtoactdocumentid" }, "authorityToBindDocumentId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Authoritytobinddocumentid" } }, "type": "object", "title": "CorporateAuthorityDocumentIds", "description": "Canonical authority-document references exposed by the KYB structure." }, "CountryCode": { "type": "string", "enum": [ "AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AQ", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB", "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "BN", "BG", "BF", "BI", "CV", "KH", "CM", "CA", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CD", "CK", "CR", "CI", "HR", "CU", "CW", "CY", "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "SZ", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF", "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM", "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IR", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI", "KP", "KR", "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MG", "MW", "MY", "MV", "ML", "MT", "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MK", "MP", "NO", "OM", "PK", "PW", "PS", "PA", "PG", "PY", "PE", "PH", "PN", "PL", "PT", "PR", "QA", "RE", "RO", "RU", "RW", "BL", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM", "ST", "SA", "SN", "RS", "SC", "SL", "SG", "SX", "SK", "SI", "SB", "SO", "ZA", "GS", "SS", "ES", "LK", "SD", "SR", "SJ", "SE", "CH", "SY", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "UG", "UA", "AE", "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "VG", "VI", "WF", "EH", "YE", "ZM", "ZW" ], "title": "CountryCode", "description": "ISO 3166-1 alpha-2 country codes." }, "CowOrder": { "properties": { "sellToken": { "type": "string", "title": "Selltoken" }, "buyToken": { "type": "string", "title": "Buytoken" }, "receiver": { "type": "string", "title": "Receiver" }, "sellAmount": { "type": "string", "title": "Sellamount" }, "buyAmount": { "type": "string", "title": "Buyamount" }, "validTo": { "type": "integer", "title": "Validto" }, "appData": { "type": "string", "title": "Appdata" }, "feeAmount": { "type": "string", "title": "Feeamount", "default": "0" }, "kind": { "$ref": "#/components/schemas/CowOrderKind", "default": "sell" }, "partiallyFillable": { "type": "boolean", "title": "Partiallyfillable", "default": false }, "sellTokenBalance": { "$ref": "#/components/schemas/CowTokenBalance", "default": "erc20" }, "buyTokenBalance": { "$ref": "#/components/schemas/CowTokenBalance", "default": "erc20" } }, "type": "object", "required": [ "sellToken", "buyToken", "receiver", "sellAmount", "buyAmount", "validTo", "appData" ], "title": "CowOrder", "description": "The order the trader signs and the order book stores.\n\nBuilt verbatim from what ``POST /quote`` returned (plus the receiver) — the\nbackend never recomputes CoW's fee or price math." }, "CowOrderKind": { "type": "string", "enum": [ "sell", "buy" ], "title": "CowOrderKind", "description": "Which side of the order is fixed." }, "CowSwapSettlementPayload": { "properties": { "order": { "$ref": "#/components/schemas/CowOrder" }, "chain_id": { "type": "integer", "title": "Chain Id" }, "owner": { "type": "string", "title": "Owner" }, "quote_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Quote Id" }, "sell_amount_total": { "type": "string", "title": "Sell Amount Total" } }, "type": "object", "required": [ "order", "chain_id", "owner", "sell_amount_total" ], "title": "CowSwapSettlementPayload", "description": "Canonical CoW order and relay metadata." }, "CowTokenBalance": { "type": "string", "enum": [ "erc20", "external", "internal" ], "title": "CowTokenBalance", "description": "Where the tokens are sourced from / delivered to." }, "CreateContractRequest": { "properties": { "contractorEmail": { "anyOf": [ { "type": "string", "maxLength": 320, "minLength": 3 }, { "type": "null" } ], "title": "Contractoremail" }, "clientEmail": { "anyOf": [ { "type": "string", "maxLength": 320, "minLength": 3 }, { "type": "null" } ], "title": "Clientemail" }, "label": { "anyOf": [ { "type": "string", "maxLength": 200 }, { "type": "null" } ], "title": "Label" }, "type": { "$ref": "#/components/schemas/ContractType", "default": "service" }, "terms": { "$ref": "#/components/schemas/ContractTermsInput-Input" }, "billing": { "$ref": "#/components/schemas/BillingCycleInput" }, "clientAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "contractorAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "documentIds": { "items": { "type": "string", "format": "uuid" }, "type": "array", "title": "Documentids" }, "generateAgreement": { "type": "boolean", "title": "Generateagreement", "default": false }, "agreementInstructions": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "title": "Agreementinstructions" }, "priorityMethods": { "items": { "$ref": "#/components/schemas/TransactionType" }, "type": "array", "title": "Prioritymethods" }, "paymentMethods": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Paymentmethods" } }, "type": "object", "title": "CreateContractRequest", "description": "Create a recurring billing agreement.\n\nExactly one of ``contractorEmail`` or ``clientEmail`` must be set:\n``contractorEmail`` means the caller is the client, ``clientEmail`` means\nthe caller is the contractor." }, "CreateInvoiceFromContractRequest": { "properties": { "amount": { "anyOf": [ { "type": "number" }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Amount" }, "comment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Comment" }, "invoicePrefix": { "type": "string", "maxLength": 16, "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$", "title": "Invoiceprefix", "description": "Prefix for auto-generated invoice_number, e.g. \"INV\" → \"INV-0001\".", "default": "INV" }, "period": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Period" }, "addItems": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Additems" } }, "type": "object", "title": "CreateInvoiceFromContractRequest", "description": "Create a one-off invoice for a contract's current billing period.\n\nEither party may call it; the invoice always flows from the contract's\ncontractor to its client. Line items default to the contract's terms." }, "CreateInvoiceRequest": { "properties": { "currency": { "$ref": "#/components/schemas/Currency", "default": "USD" }, "comment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Comment" }, "emailMessage": { "anyOf": [ { "type": "string", "maxLength": 2000 }, { "type": "null" } ], "title": "Emailmessage" }, "invoicePrefix": { "type": "string", "maxLength": 16, "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$", "title": "Invoiceprefix", "description": "Prefix for auto-generated invoice_number, e.g. \"INV\" → \"INV-0001\".", "default": "INV" }, "issuedDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Issueddate" }, "dueDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Duedate" }, "items": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Items" }, "discount": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Discount", "description": "Fixed discount in invoice currency. Subtracted from sum of items." }, "documentIds": { "anyOf": [ { "items": { "type": "string", "format": "uuid" }, "type": "array" }, { "type": "null" } ], "title": "Documentids" }, "contractorEmail": { "type": "string", "title": "Contractoremail" }, "contractorDisplayName": { "type": "string", "title": "Contractordisplayname" }, "contractorAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "clientEmail": { "type": "string", "title": "Clientemail" }, "clientDisplayName": { "type": "string", "title": "Clientdisplayname" }, "clientAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "banks": { "anyOf": [ { "items": { "type": "string", "format": "uuid" }, "type": "array" }, { "type": "null" } ], "title": "Banks" }, "onchain": { "type": "boolean", "title": "Onchain", "default": false }, "iban": { "anyOf": [ { "items": { "anyOf": [ { "$ref": "#/components/schemas/IBANAccountDetails-Input" }, { "$ref": "#/components/schemas/USExternalAccountDetails-Input" }, { "$ref": "#/components/schemas/SwiftAccountDetails-Input" }, { "$ref": "#/components/schemas/PixAccountDetails-Input" }, { "$ref": "#/components/schemas/LocalRailAccountDetails-Input" }, { "$ref": "#/components/schemas/ProviderUsdAccountDetails-Input" } ] }, "type": "array" }, { "type": "null" } ], "title": "Iban", "description": "Custom bank requisites in the same ibanData format as POST /user/contact. Each entry is snapshotted onto the invoice alongside any `banks`/`onchain` methods, so several payment options can be offered at once." }, "wallets": { "anyOf": [ { "items": { "$ref": "#/components/schemas/InvoiceWalletInput" }, "type": "array" }, { "type": "null" } ], "title": "Wallets", "description": "Custom crypto wallet requisites (network + address + currency). Snapshotted onto the invoice alongside `iban`/`banks`/`onchain`." } }, "type": "object", "required": [ "contractorEmail", "contractorDisplayName", "clientEmail", "clientDisplayName" ], "title": "CreateInvoiceRequest", "description": "Request to create an invoice.\n\nParticipant data (email, display_name, address) is snapshotted at creation time.\nAmount is computed as sum of items[].price * items[].quantity.\ninvoice_number is auto-generated per (contractor, client) pair." }, "CreateUploadedInvoiceRequest": { "properties": { "amount": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Amount" }, "currency": { "$ref": "#/components/schemas/Currency", "default": "USD" }, "comment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Comment" }, "emailMessage": { "anyOf": [ { "type": "string", "maxLength": 2000 }, { "type": "null" } ], "title": "Emailmessage" }, "issuedDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Issueddate" }, "dueDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Duedate" }, "items": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Items" }, "documentIds": { "items": { "type": "string", "format": "uuid" }, "type": "array", "title": "Documentids" }, "contractorEmail": { "type": "string", "title": "Contractoremail" }, "contractorDisplayName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Contractordisplayname" }, "contractorAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "contactIds": { "items": { "type": "string", "format": "uuid" }, "type": "array", "title": "Contactids" } }, "type": "object", "required": [ "amount", "contractorEmail" ], "title": "CreateUploadedInvoiceRequest", "description": "Create an incoming invoice from a manually uploaded/local document.\n\nCurrent user is the client/payer. Payment methods are resolved from saved\ncontacts; direct paymentMethods input is intentionally not accepted." }, "CrossChainProvider": { "type": "string", "enum": [ "intents", "lifi", "align", "cowswap", "aerodrome" ], "title": "CrossChainProvider", "description": "Cross-chain swap provider." }, "Currency": { "type": "string", "enum": [ "USD", "EUR", "GBP", "JPY", "CHF", "CAD", "AUD", "NZD", "SEK", "NOK", "AED", "HKD", "BRL", "MXN", "USDC", "USDT", "DAI", "SOL", "BTC", "ETH", "NEAR", "BNB", "XRP", "ADA", "DOGE", "TRX", "GRAM", "AVAX", "MATIC", "DOT", "LTC", "LINK", "ARB", "OP", "SUI" ], "title": "Currency", "description": "Supported invoice/contract currencies. G10 majors + AED/HKD, plus popular crypto tokens." }, "DepositToken": { "type": "string", "enum": [ "USDC", "EURC" ], "title": "DepositToken", "description": "Stablecoin a virtual account delivers on-chain for a fiat deposit.\n\nUSDC everywhere; EURC only where a live account can be re-pointed at it." }, "DocumentDraftInfo": { "properties": { "id": { "type": "string", "title": "Id" }, "type": { "$ref": "#/components/schemas/DocumentType" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "originName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Originname" }, "link": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Link" }, "createdAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Createdat" }, "issueDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Issuedate" }, "expiryDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Expirydate" }, "content": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Content" }, "dakotaId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Provider Document Id" }, "signature": { "anyOf": [ { "$ref": "#/components/schemas/DocumentSignatureInfo" }, { "type": "null" } ], "description": "Signing state for a HEVN-generated document. ``null`` when the document carries no signature blocks, so a plain upload stays plain. A stored document is not a signed one — read the state." } }, "type": "object", "required": [ "id", "type" ], "title": "DocumentDraftInfo", "description": "Document info in response." }, "DocumentExportFormat": { "type": "string", "enum": [ "pdf", "xlsx" ], "title": "DocumentExportFormat", "description": "Output format for the formal account documents (statement / confirmation)." }, "DocumentOutputFormat": { "type": "string", "enum": [ "pdf", "docx" ], "title": "DocumentOutputFormat" }, "DocumentSignatureInfo": { "properties": { "state": { "$ref": "#/components/schemas/DocumentSignatureState" }, "signatureRequestId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Signaturerequestid" }, "signerEmails": { "items": { "type": "string" }, "type": "array", "title": "Signeremails" }, "lastSignerEmail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lastsigneremail" }, "testMode": { "type": "boolean", "title": "Testmode", "default": false } }, "type": "object", "required": [ "state" ], "title": "DocumentSignatureInfo", "description": "Typed view of the ``content[\"hellosign\"]`` block for API responses." }, "DocumentSignatureState": { "type": "string", "enum": [ "draft", "sent", "viewed", "partially_signed", "signed", "declined", "canceled", "expired", "invalid" ], "title": "DocumentSignatureState", "description": "Where one generated document stands with the signing provider.\n\nA document that exists is not a document that is signed: the UI has to tell\na fresh draft from one waiting on a signer from a completed one." }, "DocumentType": { "type": "string", "enum": [ "certificate_of_incorporation", "formation_document", "articles_of_incorporation", "power_of_attorney", "corporate_structure", "company_registry_extract", "corporate_registry_extract", "shareholder_registry", "director_structure", "proof_of_address", "utility_bill", "annual_financial_statements", "articles_of_association", "audit_report", "bank_reference_letter", "bank_statement", "banking_details", "birth_certificate", "business_license", "business_plan", "certificate_of_good_standing", "crypto_statement", "credit_report", "criminal_record_check", "cv_resume", "driving_license", "education_certificate", "financial_projections", "investment_statement", "insurance_policy", "lease_agreement", "list_of_authorized_signatories", "marriage_certificate", "national_id", "operating_agreement", "partnership_agreement", "professional_license", "regulatory_license", "reference_letter", "register_of_members", "residence_permit", "shareholding_structure", "shareholders_agreement", "social_security_document", "source_of_funds_declaration", "tax_identification_document", "tax_compliance_form", "tax_returns", "payslip", "pitch_deck", "savings_statement", "trade_references", "vat_registration", "vendor_contracts", "visa", "wealth_statement", "contract", "invoice", "loan_agreement", "subscription_agreement", "safe_agreement", "convertible_note", "promissory_note", "marketing_material", "employment_contract", "authorization_to_act", "authority_to_bind", "income_verification_letter", "source_of_funds", "source_of_wealth", "supporting_document", "memorandum", "passport_front", "passport_back", "id_card_front", "id_card_back", "drivers_license_front", "drivers_license_back", "residence_permit_front", "residence_permit_back", "other" ], "title": "DocumentType", "description": "Open internal document type; providers map it to their own taxonomy." }, "Eip712SigningRequest": { "properties": { "domain": { "additionalProperties": true, "type": "object", "title": "Domain" }, "types": { "additionalProperties": true, "type": "object", "title": "Types" }, "primaryType": { "type": "string", "title": "Primarytype" }, "message": { "additionalProperties": true, "type": "object", "title": "Message" }, "digest": { "type": "string", "title": "Digest" }, "signingScheme": { "$ref": "#/components/schemas/SigningScheme", "default": "eip1271" } }, "type": "object", "required": [ "domain", "types", "primaryType", "message", "digest" ], "title": "Eip712SigningRequest", "description": "Typed data the client signs off-chain, plus its pre-computed digest.\n\n``types`` deliberately omits ``EIP712Domain``: ethers v5 rejects it and viem\ndoes not need it. ``digest`` is the full EIP-712 hash — an EOA signs it\ndirectly, the Base smart wallet signs its replay-safe wrapping and returns\nthe wrapped ERC-1271 bytes." }, "EmailAccountInput": { "properties": { "accountType": { "type": "string", "const": "email", "title": "Accounttype", "default": "email" }, "email": { "type": "string", "title": "Email" } }, "type": "object", "required": [ "email" ], "title": "EmailAccountInput", "description": "Email contact input." }, "EntityAddress": { "properties": { "streetAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Streetaddress" }, "city": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "City" }, "country": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ] }, "addressLine2": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Addressline2" }, "state": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "State" }, "zip": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Zip" } }, "type": "object", "title": "EntityAddress" }, "EntityData": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Id" }, "referenceId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Referenceid" }, "creatorUserId": { "type": "string", "format": "uuid", "title": "Creatoruserid" }, "firstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Firstname" }, "middleName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Middlename" }, "lastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lastname" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email" }, "phone": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Phone" }, "country": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ] }, "dateOfBirth": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Dateofbirth" }, "birthCountry": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ] }, "nationalities": { "items": { "$ref": "#/components/schemas/CountryCode" }, "type": "array", "title": "Nationalities" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title", "deprecated": true }, "legalName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Legalname" }, "tradeName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tradename" }, "registrationNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Registrationnumber" }, "taxId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Taxid" }, "address": { "anyOf": [ { "$ref": "#/components/schemas/EntityAddress" }, { "type": "null" } ] }, "documents": { "additionalProperties": { "items": { "type": "string", "format": "uuid" }, "type": "array" }, "type": "object", "title": "Documents" }, "identityDocuments": { "items": { "$ref": "#/components/schemas/EntityIdentityDocument" }, "type": "array", "title": "Identitydocuments" }, "companyDdData": { "$ref": "#/components/schemas/CompanyDueDiligenceData-Output" }, "usageData": { "$ref": "#/components/schemas/EntityUsageData" }, "acceptedTermsAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Acceptedtermsat" }, "corporateAuthorityDocumentIds": { "$ref": "#/components/schemas/CorporateAuthorityDocumentIds", "description": "Expose typed authority IDs without creating a second source of truth.", "readOnly": true } }, "type": "object", "required": [ "creatorUserId", "corporateAuthorityDocumentIds" ], "title": "EntityData" }, "EntityDraftWrite": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Id" }, "firstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Firstname" }, "middleName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Middlename" }, "lastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lastname" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email" }, "phone": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Phone" }, "country": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ] }, "dateOfBirth": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Dateofbirth" }, "birthCountry": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ] }, "nationalities": { "anyOf": [ { "items": { "$ref": "#/components/schemas/CountryCode" }, "type": "array" }, { "type": "null" } ], "title": "Nationalities" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title", "deprecated": true }, "legalName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Legalname" }, "tradeName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tradename" }, "registrationNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Registrationnumber" }, "taxId": { "anyOf": [ { "type": "string", "maxLength": 64 }, { "type": "null" } ], "title": "Taxid", "description": "As the registry issues it. No shape is imposed — the per-country pattern the provider sends in the requirement constraints is the only one that applies. The bound is a size guard, not a format." }, "address": { "anyOf": [ { "$ref": "#/components/schemas/EntityAddress" }, { "type": "null" } ] }, "documents": { "anyOf": [ { "additionalProperties": { "items": { "type": "string", "format": "uuid" }, "type": "array" }, "type": "object" }, { "type": "null" } ], "title": "Documents" }, "identityDocuments": { "anyOf": [ { "items": { "$ref": "#/components/schemas/EntityIdentityDocument" }, "type": "array" }, { "type": "null" } ], "title": "Identitydocuments" }, "companyDdData": { "anyOf": [ { "$ref": "#/components/schemas/CompanyDueDiligenceData-Input" }, { "type": "null" } ] }, "usageData": { "anyOf": [ { "$ref": "#/components/schemas/EntityUsageData" }, { "type": "null" } ] }, "acceptedTermsAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Acceptedtermsat" } }, "type": "object", "title": "EntityDraftWrite", "description": "Create or partially update an entity from the KYB draft editor." }, "EntityIdentityDocument": { "properties": { "type": { "anyOf": [ { "$ref": "#/components/schemas/FiatIdentityDocumentType" }, { "type": "null" } ] }, "issuingCountry": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ] }, "number": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Number" } }, "type": "object", "title": "EntityIdentityDocument", "description": "Issuing metadata for one identity document held by a person entity.\n\nThe scanned pages live in ``Entity.documents`` keyed by upload slot\n(``passport_front``, ``id_card_back``, …); this carries what the slot\ncannot express and what providers ask for: the document's own type, the\ncountry that issued it and its number." }, "EntityProviderVerificationData": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Id" }, "provider": { "$ref": "#/components/schemas/FiatProvider" }, "externalId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Externalid" }, "status": { "type": "string", "title": "Status" }, "kycLink": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Kyclink" }, "kycLinkState": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Kyclinkstate" }, "kycLinkExpiresAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Kyclinkexpiresat" } }, "type": "object", "required": [ "provider", "status" ], "title": "EntityProviderVerificationData" }, "EntityRelationshipDraftData": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "sourceEntityId": { "type": "string", "format": "uuid", "title": "Sourceentityid" }, "targetEntityId": { "type": "string", "format": "uuid", "title": "Targetentityid" }, "ownershipPercentage": { "anyOf": [ { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Ownershippercentage" }, "hasControl": { "type": "boolean", "title": "Hascontrol" }, "isDirector": { "type": "boolean", "title": "Isdirector" }, "isSigner": { "type": "boolean", "title": "Issigner" }, "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "status": { "$ref": "#/components/schemas/EntityRelationshipStatus", "default": "active" }, "verifications": { "items": { "$ref": "#/components/schemas/EntityProviderVerificationData" }, "type": "array", "title": "Verifications" } }, "type": "object", "required": [ "id", "sourceEntityId", "targetEntityId", "hasControl", "isDirector", "isSigner" ], "title": "EntityRelationshipDraftData" }, "EntityRelationshipDraftUpdate": { "properties": { "ownershipPercentage": { "anyOf": [ { "type": "number", "maximum": 100.0, "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Ownershippercentage" }, "hasControl": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Hascontrol" }, "isDirector": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Isdirector" }, "isSigner": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Issigner" }, "title": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Title", "description": "Office held in the target company, for example 'Director'." } }, "type": "object", "title": "EntityRelationshipDraftUpdate", "description": "Editable relationship terms; endpoints and consent status stay fixed." }, "EntityRelationshipDraftWrite": { "properties": { "ownershipPercentage": { "anyOf": [ { "type": "number", "maximum": 100.0, "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Ownershippercentage" }, "id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Id" }, "sourceEntityId": { "type": "string", "format": "uuid", "title": "Sourceentityid" }, "targetEntityId": { "type": "string", "format": "uuid", "title": "Targetentityid" }, "hasControl": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Hascontrol" }, "isDirector": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Isdirector" }, "isSigner": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Issigner" }, "title": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Title", "description": "Office held in the target company, for example 'Director'." } }, "type": "object", "required": [ "sourceEntityId", "targetEntityId" ], "title": "EntityRelationshipDraftWrite", "description": "Create or partially update a relationship in the KYB graph." }, "EntityRelationshipStatus": { "type": "string", "enum": [ "pending", "active", "revoked" ], "title": "EntityRelationshipStatus", "description": "Consent state for a KYB ownership or authority relationship." }, "EntityUsageData": { "properties": { "business": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Business" }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry" }, "businessType": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Businesstype" }, "businessTypeDetails": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Businesstypedetails" }, "verifierRole": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Verifierrole" }, "sourceOfFunds": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sourceoffunds" }, "sourceOfFundsDetails": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sourceoffundsdetails" }, "purposeOfFunds": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Purposeoffunds" }, "purposeOfFundsDetails": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Purposeoffundsdetails" }, "flowOfFunds": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Flowoffunds" }, "complianceScreening": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Compliancescreening" }, "handlesCustomerFunds": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Handlescustomerfunds" }, "actingAsIntermediary": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Actingasintermediary" }, "sanctionedCountryOperations": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Sanctionedcountryoperations" }, "highRiskActivities": { "items": { "type": "string" }, "type": "array", "title": "Highriskactivities" }, "depositMethods": { "items": { "type": "string" }, "type": "array", "title": "Depositmethods" }, "contactInfo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Contactinfo" } }, "type": "object", "title": "EntityUsageData" }, "EvmTransactionRequest": { "properties": { "chainId": { "type": "integer", "title": "Chainid" }, "to": { "type": "string", "title": "To" }, "data": { "type": "string", "title": "Data" }, "value": { "type": "string", "title": "Value", "default": "0x0" }, "gasLimit": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Gaslimit" } }, "type": "object", "required": [ "chainId", "to", "data" ], "title": "EvmTransactionRequest", "description": "An EVM transaction the client signs and broadcasts from its wallet." }, "ExecutePayoutQuoteRequest": { "properties": { "quoteId": { "type": "string", "maxLength": 64, "minLength": 32, "pattern": "^([0-9a-f]{32}|[0-9a-f]{64}|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$", "title": "Quoteid", "description": "The `quoteId` the quote was issued under — the same one submit was called with, since submit answers with no id of its own — or the SHA-256 of the quote amount, recipient and idempotency key that the signed typed data names. Both address the same quote. Every id we issue is a bare one of ours: no channel prefix and no provider marker, whichever rail priced it." }, "signature": { "$ref": "#/components/schemas/ClientSignature", "description": "Base smart wallet signature over the payout typed data (`scheme: eip1271`). The backend rebuilds the digest from the stored quote and asks the wallet's isValidSignature about it." } }, "type": "object", "required": [ "quoteId", "signature" ], "title": "ExecutePayoutQuoteRequest", "description": "Execute a persisted the banking provider fiat payout quote.\n\nAuthorized by the smart wallet's ERC-1271 signature over the quote's\n`executionContract.typedData`." }, "ExecuteSwapQuoteRequest": { "properties": { "quoteId": { "type": "string", "title": "Quoteid" }, "signature": { "$ref": "#/components/schemas/ClientSignature" } }, "type": "object", "required": [ "quoteId", "signature" ], "title": "ExecuteSwapQuoteRequest", "description": "Execute a swap quote the account authorized with a signature.\n\nSent when submit's `executionContract` says `requiresExecution`." }, "ExecutionContract": { "properties": { "mode": { "$ref": "#/components/schemas/SettlementMode" }, "depositAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Depositaddress" }, "depositMemo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Depositmemo" }, "depositAmount": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Depositamount" }, "depositToken": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Deposittoken" }, "approval": { "anyOf": [ { "$ref": "#/components/schemas/TokenApproval" }, { "type": "null" } ] }, "transaction": { "anyOf": [ { "$ref": "#/components/schemas/EvmTransactionRequest" }, { "type": "null" } ] }, "typedData": { "anyOf": [ { "$ref": "#/components/schemas/Eip712SigningRequest" }, { "type": "null" } ] }, "hashAlgorithm": { "anyOf": [ { "type": "string", "const": "sha256" }, { "type": "null" } ], "title": "Hashalgorithm" }, "canonicalization": { "anyOf": [ { "type": "string", "const": "sorted-json-v1" }, { "type": "null" } ], "title": "Canonicalization" }, "hashArguments": { "anyOf": [ { "$ref": "#/components/schemas/PayoutQuoteHashArguments" }, { "type": "null" } ] }, "canonicalPayload": { "anyOf": [ { "$ref": "#/components/schemas/AerodromeSettlementPayload" }, { "$ref": "#/components/schemas/LifiSettlementPayload" }, { "$ref": "#/components/schemas/CowSwapSettlementPayload" }, { "$ref": "#/components/schemas/AlignSettlementPayload" }, { "type": "string" }, { "type": "null" } ], "title": "Canonicalpayload" }, "requiresExecution": { "type": "boolean", "title": "Requiresexecution", "readOnly": true } }, "type": "object", "required": [ "mode", "requiresExecution" ], "title": "ExecutionContract", "description": "Everything the client needs to execute one quote.\n\nOne format for every channel: crypto routes carry deposit / transaction /\norder instructions, the banking provider fiat payouts carry the typed data to sign and the\narguments that reproduce the quote hash. ``canonical_payload`` pins what was\nquoted — the provider payload persisted with a crypto route (``/submit``\nrelays from it, never from client input), or the canonical JSON a the banking provider\nquote id is hashed from." }, "FiatIdentityDocumentType": { "type": "string", "enum": [ "passport", "id_card", "drivers_license", "driver_license", "residence_permit", "government_id", "state_or_provincial_id", "visa" ], "title": "FiatIdentityDocumentType", "description": "Identity document type." }, "FiatPaymentType": { "type": "string", "enum": [ "sepa", "swift", "ach", "uaefts", "fedwire", "rtp", "fednow", "pix", "spei", "pse", "transfers_3_0", "ukfps" ], "title": "FiatPaymentType", "description": "Canonical fiat payment rail used for ``account_type`` discrimination,\nbank-rail methods, and contact/transaction type alignment." }, "FiatPayoutAddress": { "properties": { "addressLine1": { "type": "string", "title": "Addressline1" }, "city": { "type": "string", "title": "City" }, "country": { "type": "string", "title": "Country" }, "addressLine2": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Addressline2" }, "state": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "State" }, "postalCode": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Postalcode" } }, "type": "object", "required": [ "addressLine1", "city", "country" ], "title": "FiatPayoutAddress" }, "FiatPayoutRecipient": { "properties": { "rail": { "type": "string", "enum": [ "us", "swift" ], "title": "Rail" }, "type": { "type": "string", "enum": [ "individual", "business" ], "title": "Type" }, "bankAddress": { "$ref": "#/components/schemas/FiatPayoutAddress" }, "postalAddress": { "$ref": "#/components/schemas/FiatPayoutAddress" }, "accountNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountnumber" }, "routingNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Routingnumber" }, "accountType": { "anyOf": [ { "type": "string", "enum": [ "checking", "savings" ] }, { "type": "null" } ], "title": "Accounttype" }, "iban": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iban" }, "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bic" }, "bankName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bankname" }, "firstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Firstname" }, "lastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lastname" }, "legalName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Legalname" }, "phone": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Phone" } }, "type": "object", "required": [ "rail", "type", "bankAddress", "postalAddress" ], "title": "FiatPayoutRecipient" }, "FiatProvider": { "type": "string", "enum": [ "swipelux", "align", "dakota", "mcp", "wirex", "conduit_fiat", "conduit_crypto", "due" ], "title": "FiatProvider", "description": "Supported fiat payment providers." }, "FiatRailResponse": { "properties": { "provider": { "$ref": "#/components/schemas/FiatProvider" }, "externalUserId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Externaluserid" }, "kycStatus": { "type": "string", "title": "Kycstatus", "default": "not_started" }, "comment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Comment" }, "kybSubmissions": { "items": { "type": "string", "format": "date-time" }, "type": "array", "title": "Kybsubmissions" } }, "type": "object", "required": [ "provider" ], "title": "FiatRailResponse", "description": "Response schema for a user's fiat rail registration." }, "FiatTransactionCount": { "type": "string", "enum": [ "<10", "10-50", "50-200", "200-1,000", "1,000+" ], "title": "FiatTransactionCount", "description": "Expected monthly transaction-count range declared during KYB." }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "IBANAccountDetails-Input": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "enum": [ "sepa", "uaefts" ], "title": "Accounttype", "default": "sepa" }, "ibanNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Ibannumber" }, "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bic" } }, "type": "object", "required": [ "bankName", "accountHolderType" ], "title": "IBANAccountDetails", "description": "IBAN (SEPA) external account." }, "IBANAccountDetails-Output": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "enum": [ "sepa", "uaefts" ], "title": "Accounttype", "default": "sepa" }, "ibanNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Ibannumber" }, "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bic" }, "beneficiaryName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Beneficiaryname", "description": "Frontend-only alias derived from account holder fields.", "readOnly": true } }, "type": "object", "required": [ "bankName", "accountHolderType", "beneficiaryName" ], "title": "IBANAccountDetails", "description": "IBAN (SEPA) external account." }, "IBANStatus": { "type": "string", "enum": [ "not_started", "requested", "document_requested", "approved", "pending_kyc", "pending", "active", "paused", "hidden", "frozen", "closed", "rejected" ], "title": "IBANStatus", "description": "IBAN account status.\n\nState machine:\n``not_started`` → ``requested`` → ``document_requested`` → ``approved`` → ``pending`` → ``active``\n\n- ``not_started`` — default for every rail until the user opts in.\n- ``requested`` — user asked for this rail via /pre-approve; awaiting KYC.\n- ``document_requested``— admin asked the user for more documents (KYB).\n- ``approved`` — KYB passed, account ready to be created at provider.\n- ``pending_kyc`` — provider rejected creation until KYC is approved.\n- ``pending`` — provider accepted/created the account, waiting.\n- ``active`` — real bank details are attached to the row.\n- ``frozen`` / ``closed``— terminal/blocked states." }, "InvoiceContractInfo": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "type": { "$ref": "#/components/schemas/ContractType" }, "status": { "$ref": "#/components/schemas/ContractStatus" }, "period": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Period" }, "isRecurring": { "type": "boolean", "title": "Isrecurring" }, "activationAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Activationat" }, "expirationAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Expirationat" } }, "type": "object", "required": [ "id", "type", "status", "isRecurring" ], "title": "InvoiceContractInfo", "description": "Minimal contract info embedded in invoice response." }, "InvoiceDocumentInfo": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "key": { "type": "string", "title": "Key" } }, "type": "object", "required": [ "id", "name", "key" ], "title": "InvoiceDocumentInfo", "description": "Document attached to an invoice.\n\n`key` is a short-lived signed token. To download call\nGET /documents/download/{id}?key={key}." }, "InvoiceListResponse": { "properties": { "invoices": { "items": { "$ref": "#/components/schemas/InvoiceResponse" }, "type": "array", "title": "Invoices" } }, "type": "object", "required": [ "invoices" ], "title": "InvoiceListResponse", "description": "List of invoices." }, "InvoiceParticipant": { "properties": { "email": { "type": "string", "title": "Email" }, "displayName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Displayname" }, "address": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] } }, "type": "object", "required": [ "email" ], "title": "InvoiceParticipant", "description": "Minimal participant info for invoice response." }, "InvoiceResponse": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "onchainTransactionId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Onchaintransactionid" }, "transaction": { "anyOf": [ { "$ref": "#/components/schemas/InvoiceTransactionInfo" }, { "type": "null" } ] }, "amount": { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "title": "Amount" }, "discount": { "anyOf": [ { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Discount" }, "currency": { "$ref": "#/components/schemas/Currency" }, "comment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Comment" }, "emailMessage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Emailmessage" }, "invoiceNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Invoicenumber" }, "periodNumber": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Periodnumber" }, "issuedDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Issueddate" }, "dueDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Duedate" }, "items": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Items" }, "paymentMethods": { "items": { "anyOf": [ { "$ref": "#/components/schemas/IBANAccountDetails-Output" }, { "$ref": "#/components/schemas/USExternalAccountDetails-Output" }, { "$ref": "#/components/schemas/SwiftAccountDetails-Output" }, { "$ref": "#/components/schemas/PixAccountDetails-Output" }, { "$ref": "#/components/schemas/LocalRailAccountDetails-Output" }, { "$ref": "#/components/schemas/ProviderUsdAccountDetails-Output" }, { "$ref": "#/components/schemas/ContactWalletResponse" }, { "$ref": "#/components/schemas/EmailAccountInput" } ] }, "type": "array", "title": "Paymentmethods" }, "status": { "$ref": "#/components/schemas/InvoiceStatus" }, "client": { "anyOf": [ { "$ref": "#/components/schemas/InvoiceParticipant" }, { "type": "null" } ] }, "contractor": { "anyOf": [ { "$ref": "#/components/schemas/InvoiceParticipant" }, { "type": "null" } ] }, "contract": { "anyOf": [ { "$ref": "#/components/schemas/InvoiceContractInfo" }, { "type": "null" } ] }, "documents": { "items": { "$ref": "#/components/schemas/InvoiceDocumentInfo" }, "type": "array", "title": "Documents" }, "paidAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Paidat" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" }, "updatedAt": { "type": "string", "format": "date-time", "title": "Updatedat" } }, "type": "object", "required": [ "id", "amount", "currency", "status", "createdAt", "updatedAt" ], "title": "InvoiceResponse", "description": "Invoice response.\n\nCarries no download link: the PDF is rendered on request at\n``GET /public/invoices/{id}/pdf``. Add\n``?details=`` for the copy naming that payment\nmethod; without it the copy carries no payment details." }, "InvoiceStatus": { "type": "string", "enum": [ "draft", "sent", "paid", "cancelled", "client_paid", "client_declined" ], "title": "InvoiceStatus", "description": "Invoice status." }, "InvoiceTransactionInfo": { "properties": { "onchainTransactionId": { "type": "string", "title": "Onchaintransactionid" }, "amount": { "type": "number", "title": "Amount" }, "txHash": { "type": "string", "title": "Txhash" }, "type": { "type": "string", "title": "Type" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" } }, "type": "object", "required": [ "onchainTransactionId", "amount", "txHash", "type", "createdAt" ], "title": "InvoiceTransactionInfo", "description": "Minimal transaction info embedded in invoice response." }, "InvoiceWalletInput": { "properties": { "address": { "type": "string", "minLength": 1, "title": "Address", "description": "Recipient wallet address." }, "chainId": { "type": "string", "minLength": 1, "title": "Chainid", "description": "Network, e.g. 'base', 'ethereum'." }, "currency": { "type": "string", "title": "Currency", "description": "Token symbol — the source of truth for the asset.", "default": "USDC" } }, "type": "object", "required": [ "address", "chainId" ], "title": "InvoiceWalletInput", "description": "Custom crypto wallet payment requisite for an invoice.\n\nStored in the same JSONB ``payment_methods`` snapshot as bank requisites, so\nno DB change is needed — it round-trips through ``ContactWalletResponse``." }, "IssueCardRequest": { "properties": { "format": { "$ref": "#/components/schemas/CardFormat", "default": "virtual" } }, "type": "object", "title": "IssueCardRequest", "description": "Request to issue a new card." }, "KybDocumentUpload": { "properties": { "base64": { "type": "string", "title": "Base64" }, "type": { "$ref": "#/components/schemas/DocumentType" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "originName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Originname" }, "context": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Context" } }, "type": "object", "required": [ "base64", "type" ], "title": "KybDocumentUpload", "description": "Document upload for draft." }, "KybEntityDocumentAttach": { "properties": { "type": { "$ref": "#/components/schemas/DocumentType" } }, "type": "object", "required": [ "type" ], "title": "KybEntityDocumentAttach", "description": "File a document that already exists under an entity's slot." }, "KybEntityDocumentUpload": { "properties": { "base64": { "type": "string", "title": "Base64" }, "type": { "$ref": "#/components/schemas/DocumentType" }, "originName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Originname" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" } }, "type": "object", "required": [ "base64", "type" ], "title": "KybEntityDocumentUpload", "description": "Upload a file straight into one entity's document slot.\n\nUpload, KYB classification and the link to the entity are one request\nbecause they were one operation all along: a file uploaded but not filed\nis invisible, and a slot pointing at a file that failed to upload is worse." }, "KybGraphResponse": { "properties": { "rootEntityId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Rootentityid", "description": "The entity the KYB application is about." }, "kybStatus": { "$ref": "#/components/schemas/KycStatus" }, "kybStatusByRails": { "additionalProperties": { "$ref": "#/components/schemas/KycStatus" }, "propertyNames": { "$ref": "#/components/schemas/BankRail" }, "type": "object", "title": "Kybstatusbyrails" }, "entities": { "items": { "$ref": "#/components/schemas/EntityData" }, "type": "array", "title": "Entities", "description": "EVERY entity this user owns — the ones the ownership walk reaches and the ones it does not. Splitting them is what made half-linked people invisible to the client that created them; deciding what to show is the client's job, and it needs the whole set to do it." }, "relationships": { "items": { "$ref": "#/components/schemas/EntityRelationshipDraftData" }, "type": "array", "title": "Relationships" }, "pendingShareholders": { "items": { "$ref": "#/components/schemas/KybPendingShareholderData" }, "type": "array", "title": "Pendingshareholders", "description": "Invited owners who have not consented yet. Only their HEVN login email and relationship status are disclosed." }, "documents": { "additionalProperties": { "items": { "$ref": "#/components/schemas/DocumentDraftInfo" }, "type": "array" }, "type": "object", "title": "Documents", "description": "Resolved documents (name, signed link) keyed by entity id. Each ``type`` is the slot the file is filed in, which is what the admin console and the submission gate read; a file filed in two slots is reported once per slot." }, "requiredDocuments": { "items": { "type": "string" }, "type": "array", "title": "Requireddocuments", "description": "Company document slots the draft flow asks for. Jurisdiction-dependent — a US company is also asked for its IRS EIN letter." }, "requiredShareholderDocuments": { "items": { "type": "string" }, "type": "array", "title": "Requiredshareholderdocuments", "description": "Document types every shareholder needs. Enforced at submit, so a client that cannot read the list here can only discover it by being refused." }, "corporateAuthorityDocumentsRequired": { "type": "boolean", "title": "Corporateauthoritydocumentsrequired", "description": "Whether Authorization to Act and Authority to Bind documents are required. False when the account email belongs to a director.", "default": true }, "missingFields": { "items": { "type": "string" }, "type": "array", "title": "Missingfields", "description": "What submission is still waiting for: the required fields ``POST /kyb/submit`` enforces, plus the document slots it asks for but does not block on. Without it here the flow could only discover the gap by being refused." }, "isReadyForSubmission": { "type": "boolean", "title": "Isreadyforsubmission", "default": false }, "uboKycLinks": { "items": { "$ref": "#/components/schemas/UboKycLink" }, "type": "array", "title": "Ubokyclinks" }, "comment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Comment" }, "updatedAt": { "type": "string", "format": "date-time", "title": "Updatedat" } }, "type": "object", "required": [ "kybStatus", "updatedAt" ], "title": "KybGraphResponse", "description": "The customer-facing view of one user's KYB graph.\n\nEverything the KYB flow needs in one read, and nothing shaped like a\nquestionnaire: the client edits entities and edges, so that is what it is\ngiven. The admin's richer, projection-shaped view lives in\n:class:`KybDraftResponse` and is built by a different service." }, "KybOwnerCreateRequest": { "properties": { "ownershipPercentage": { "anyOf": [ { "type": "number", "maximum": 100.0, "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Ownershippercentage" }, "entity": { "$ref": "#/components/schemas/EntityDraftWrite" }, "targetEntityId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Targetentityid" }, "hasControl": { "type": "boolean", "title": "Hascontrol", "default": false }, "isDirector": { "type": "boolean", "title": "Isdirector", "default": false }, "isSigner": { "type": "boolean", "title": "Issigner", "default": false } }, "type": "object", "required": [ "entity" ], "title": "KybOwnerCreateRequest", "description": "Add an owner: the person (or holding company) AND the edge that makes\nthem one.\n\nTwo requests could not express this. An entity saved without its edge is\nunreachable from the ownership walk, so nothing could ever show it again —\nwhich is how editors accumulated people nobody could see." }, "KybOwnerResponse": { "properties": { "entity": { "$ref": "#/components/schemas/EntityData" }, "relationship": { "$ref": "#/components/schemas/EntityRelationshipDraftData" } }, "type": "object", "required": [ "entity", "relationship" ], "title": "KybOwnerResponse", "description": "Both halves of the owner that was just created, with their ids." }, "KybPendingShareholderData": { "properties": { "relationshipId": { "type": "string", "format": "uuid", "title": "Relationshipid" }, "email": { "type": "string", "format": "email", "title": "Email" }, "ownershipPercentage": { "anyOf": [ { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Ownershippercentage" }, "hasControl": { "type": "boolean", "title": "Hascontrol" }, "isDirector": { "type": "boolean", "title": "Isdirector" }, "isSigner": { "type": "boolean", "title": "Issigner" }, "status": { "type": "string", "const": "pending", "title": "Status" } }, "type": "object", "required": [ "relationshipId", "email", "hasControl", "isDirector", "isSigner", "status" ], "title": "KybPendingShareholderData", "description": "Editable pending owner card without any invited entity profile fields." }, "KybSubjectRequest": { "properties": { "legalName": { "anyOf": [ { "type": "string", "maxLength": 255, "minLength": 1 }, { "type": "null" } ], "title": "Legalname" } }, "type": "object", "title": "KybSubjectRequest", "description": "Name the entity the KYB application is about, creating it if needed.\n\nThe subject's type is decided once and never again (a check constraint\nforbids turning a person row into a company in place), so it cannot be\ncreated by guesswork — this is where the account declares itself." }, "KycLinkResponse": { "properties": { "link": { "type": "string", "title": "Link" } }, "type": "object", "required": [ "link" ], "title": "KycLinkResponse", "description": "KYC verification link." }, "KycStatus": { "type": "string", "enum": [ "not_started", "requested", "incorporating", "pending", "under_review", "approved", "rejected" ], "title": "KycStatus", "description": "KYC verification status." }, "KycStatusResponse": { "properties": { "provider": { "$ref": "#/components/schemas/FiatProvider" }, "externalUserId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Externaluserid" }, "email": { "type": "string", "title": "Email" }, "status": { "anyOf": [ { "$ref": "#/components/schemas/KycStatus" }, { "type": "null" } ] }, "kycStatus": { "$ref": "#/components/schemas/KycStatus" }, "firstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Firstname" }, "lastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lastname" }, "entityName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entityname" }, "kycLink": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Kyclink" }, "kycUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Kycurl" }, "contactSupportLink": { "type": "string", "title": "Contactsupportlink", "default": "https://app.gethevn.com/chat" } }, "type": "object", "required": [ "provider", "email", "kycStatus" ], "title": "KycStatusResponse", "description": "Response schema for KYC status check." }, "LifiSettlementPayload": { "properties": { "transaction": { "$ref": "#/components/schemas/EvmTransactionRequest" }, "spender": { "type": "string", "title": "Spender" }, "token": { "type": "string", "title": "Token" }, "amount": { "type": "string", "title": "Amount" } }, "type": "object", "required": [ "transaction", "spender", "token", "amount" ], "title": "LifiSettlementPayload", "description": "Canonical LiFi transaction and approval inputs." }, "LocalRailAccountDetails-Input": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "enum": [ "spei", "pse", "transfers_3_0", "ukfps" ], "title": "Accounttype" }, "local": { "$ref": "#/components/schemas/LocalRailDetails" } }, "type": "object", "required": [ "bankName", "accountHolderType", "accountType", "local" ], "title": "LocalRailAccountDetails", "description": "Local payment rail account details." }, "LocalRailAccountDetails-Output": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "enum": [ "spei", "pse", "transfers_3_0", "ukfps" ], "title": "Accounttype" }, "local": { "$ref": "#/components/schemas/LocalRailDetails" }, "beneficiaryName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Beneficiaryname", "description": "Frontend-only alias derived from account holder fields.", "readOnly": true } }, "type": "object", "required": [ "bankName", "accountHolderType", "accountType", "local", "beneficiaryName" ], "title": "LocalRailAccountDetails", "description": "Local payment rail account details." }, "LocalRailDetails": { "properties": { "accountNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountnumber" }, "routingNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Routingnumber" }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" } }, "type": "object", "title": "LocalRailDetails", "description": "Local payment rail account details for Swipelux regional accounts." }, "MarkdownDocumentCreateRequest": { "properties": { "name": { "type": "string", "maxLength": 255, "minLength": 1, "title": "Name", "description": "Human-readable document title.", "default": "Generated document" }, "originName": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Originname", "description": "Human-readable final filename with spaces and extension, for example 'Mutual NDA - Client Inc and HEVN Inc.pdf'. Do not use snake_case or slug text." }, "documentType": { "$ref": "#/components/schemas/DocumentType", "description": "Stored HEVN document type.", "default": "other" }, "context": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Context", "description": "Document context stored with the document row.", "default": "hevn_generated" }, "title": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Title", "description": "Optional render title. Defaults to name." }, "markdownBase64": { "type": "string", "title": "Markdownbase64", "description": "Base64-encoded UTF-8 markdown file content." }, "outputFormat": { "$ref": "#/components/schemas/DocumentOutputFormat", "description": "Generated document file format.", "default": "pdf" } }, "type": "object", "required": [ "markdownBase64" ], "title": "MarkdownDocumentCreateRequest", "description": "Upload markdown, render it through safe document blocks, and store a file." }, "McpTransactionResponse": { "properties": { "txHash": { "type": "string", "title": "Txhash" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amount" }, "receiverEmail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Receiveremail" }, "receiverAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Receiveraddress" }, "transactionLink": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Transactionlink" }, "time": { "type": "string", "format": "date-time", "title": "Time" } }, "type": "object", "required": [ "txHash", "time" ], "title": "McpTransactionResponse" }, "OnchainAccountInput": { "properties": { "accountType": { "type": "string", "const": "onchain", "title": "Accounttype", "default": "onchain" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email" }, "walletAddress": { "type": "string", "title": "Walletaddress" }, "chainId": { "$ref": "#/components/schemas/OneClickChain" }, "currency": { "type": "string", "title": "Currency" } }, "type": "object", "required": [ "walletAddress", "chainId", "currency" ], "title": "OnchainAccountInput", "description": "Onchain wallet contact input." }, "OneClickChain": { "type": "string", "enum": [ "eth", "bsc", "avax", "op", "arb", "pol", "sol", "base", "gnosis", "tron", "xrp", "zec", "doge", "ltc", "btc", "cardano", "bera", "sui", "near", "near_intents", "xlayer", "plasma", "ton", "stellar", "monad", "starknet", "aptos", "adi", "bch" ], "title": "OneClickChain", "description": "1click chain codes." }, "PayinQuoteRequest": { "properties": { "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amount" }, "amountTo": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amountto" }, "currency": { "type": "string", "title": "Currency" }, "originChainId": { "$ref": "#/components/schemas/OneClickChain" } }, "type": "object", "required": [ "currency", "originChainId" ], "title": "PayinQuoteRequest", "description": "Price a cross-chain deposit into the Base smart wallet.\n\nWhich side is pinned is said by which amount is sent, exactly as on the\npayout: ``amount`` in the origin token the user will send, ``amountTo`` in\nthe USDC the wallet must receive." }, "PayinSubmitRequest": { "properties": { "quoteId": { "type": "string", "title": "Quoteid" } }, "type": "object", "required": [ "quoteId" ], "title": "PayinSubmitRequest", "description": "Open the payin quote that was priced, by the id the quote answered with." }, "PayoutQuoteDryRunRequest": { "properties": { "rail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Rail" }, "amount": { "type": "number", "title": "Amount" }, "type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Type" }, "tokenTo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tokento" }, "chainTo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Chainto" }, "sourceToken": { "$ref": "#/components/schemas/PayoutSourceToken", "default": "USDC" }, "providers": { "anyOf": [ { "items": { "$ref": "#/components/schemas/CrossChainProvider" }, "type": "array" }, { "type": "null" } ], "title": "Providers" } }, "type": "object", "required": [ "amount" ], "title": "PayoutQuoteDryRunRequest", "description": "Request for approximate payout quote without contact." }, "PayoutQuoteDryRunResponse": { "properties": { "currencyTo": { "type": "string", "title": "Currencyto" }, "amountTo": { "type": "number", "title": "Amountto" }, "minAmount": { "type": "number", "title": "Minamount" }, "fee": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fee" }, "fixedFee": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fixedfee" }, "flatFee": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Flatfee" } }, "type": "object", "required": [ "currencyTo", "amountTo", "minAmount" ], "title": "PayoutQuoteDryRunResponse", "description": "Approximate payout quote response without provider-side activation." }, "PayoutQuoteHashArguments": { "properties": { "amount": { "type": "string", "title": "Amount" }, "recipient": { "$ref": "#/components/schemas/FiatPayoutRecipient" }, "idempotencyKey": { "type": "string", "title": "Idempotencykey" }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "documentIds": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Documentids" } }, "type": "object", "required": [ "amount", "recipient", "idempotencyKey" ], "title": "PayoutQuoteHashArguments", "description": "Typed arguments used to derive a the banking provider payout quote ID." }, "PayoutQuoteRequest": { "properties": { "documentIds": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 10, "title": "Documentids" }, "documentId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Documentid" }, "contactId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Contactid" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amount" }, "amountTo": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amountto" }, "bankAccountId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Bankaccountid" }, "rail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Rail" }, "sourceToken": { "$ref": "#/components/schemas/PayoutSourceToken", "default": "USDC" }, "providers": { "anyOf": [ { "items": { "$ref": "#/components/schemas/CrossChainProvider" }, "type": "array" }, { "type": "null" } ], "title": "Providers" }, "fundingMode": { "type": "string", "enum": [ "balance", "deposit" ], "title": "Fundingmode", "default": "balance" } }, "type": "object", "title": "PayoutQuoteRequest", "description": "Request for a payout to a contact.\n\nMoving value between the user's own accounts is a different operation with\nits own resource — ``POST /balance/swap/quote`` (docs/balance-swap.md)." }, "PayoutRailDetails": { "properties": { "method": { "type": "string", "title": "Method" }, "name": { "type": "string", "title": "Name" }, "fixedFee": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fixedfee" }, "minAmount": { "type": "number", "title": "Minamount" }, "memoLengthLimit": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Memolengthlimit" }, "amountToSupported": { "type": "boolean", "title": "Amounttosupported", "default": false }, "sourceTokens": { "items": { "$ref": "#/components/schemas/PayoutSourceToken" }, "type": "array", "title": "Sourcetokens" } }, "type": "object", "required": [ "method", "name", "minAmount" ], "title": "PayoutRailDetails", "description": "Supported payout method metadata for a bank rail." }, "PayoutSourceToken": { "type": "string", "enum": [ "USDC", "EURC" ], "title": "PayoutSourceToken", "description": "Stablecoin a payout (offramp) quote is funded with.\n\nUSDC is the default across all providers. EURC is Align-only: Align\naccepts an EURC deposit for EUR/SEPA offramps (and prices other\ndestination currencies through its own FX)." }, "PixAccountDetails-Input": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "const": "pix", "title": "Accounttype", "default": "pix" }, "pix": { "$ref": "#/components/schemas/PixDetails" } }, "type": "object", "required": [ "bankName", "accountHolderType", "pix" ], "title": "PixAccountDetails", "description": "Brazil PIX external account." }, "PixAccountDetails-Output": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "const": "pix", "title": "Accounttype", "default": "pix" }, "pix": { "$ref": "#/components/schemas/PixDetails" }, "beneficiaryName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Beneficiaryname", "description": "Frontend-only alias derived from account holder fields.", "readOnly": true } }, "type": "object", "required": [ "bankName", "accountHolderType", "pix", "beneficiaryName" ], "title": "PixAccountDetails", "description": "Brazil PIX external account." }, "PixAccountInput": { "properties": { "accountType": { "type": "string", "const": "pix", "title": "Accounttype", "default": "pix" }, "pixKey": { "type": "string", "title": "Pixkey" }, "accountHolderName": { "type": "string", "title": "Accountholdername" }, "bankName": { "type": "string", "title": "Bankname" }, "currency": { "type": "string", "title": "Currency", "default": "BRL" }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." } }, "type": "object", "required": [ "pixKey", "accountHolderName", "bankName" ], "title": "PixAccountInput", "description": "Brazil PIX bank contact input.\n\nPIX carries a single holder name; it maps to a business holder because the internal\ndetails shape requires first+last names for individuals (mirrors the legacy `iban` path)." }, "PixDetails": { "properties": { "pixKey": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Pixkey" }, "accountNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountnumber" } }, "type": "object", "title": "PixDetails", "description": "Brazil PIX account details." }, "ProviderUsdAccountDetails-Input": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "const": "conduit", "title": "Accounttype", "default": "conduit" }, "us": { "anyOf": [ { "$ref": "#/components/schemas/USAccountDetails" }, { "type": "null" } ] } }, "type": "object", "required": [ "bankName", "accountHolderType" ], "title": "ProviderUsdAccountDetails", "description": "One the banking provider USD account whose US details also carry its SWIFT BIC." }, "ProviderUsdAccountDetails-Output": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "const": "conduit", "title": "Accounttype", "default": "conduit" }, "us": { "anyOf": [ { "$ref": "#/components/schemas/USAccountDetails" }, { "type": "null" } ] }, "beneficiaryName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Beneficiaryname", "description": "Frontend-only alias derived from account holder fields.", "readOnly": true } }, "type": "object", "required": [ "bankName", "accountHolderType", "beneficiaryName" ], "title": "ProviderUsdAccountDetails", "description": "One the banking provider USD account whose US details also carry its SWIFT BIC." }, "PublicInvoiceContractInfo": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "documentName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Documentname" }, "documentLink": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Documentlink" } }, "type": "object", "required": [ "id" ], "title": "PublicInvoiceContractInfo" }, "PublicInvoiceItem": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "quantity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Quantity" }, "price": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Price" } }, "type": "object", "title": "PublicInvoiceItem" }, "PublicInvoiceResponse": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "amount": { "type": "number", "title": "Amount" }, "currency": { "type": "string", "title": "Currency" }, "comment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Comment" }, "invoiceNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Invoicenumber" }, "issuedDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Issueddate" }, "dueDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Duedate" }, "status": { "$ref": "#/components/schemas/InvoiceStatus" }, "client": { "anyOf": [ { "$ref": "#/components/schemas/InvoiceParticipant" }, { "type": "null" } ] }, "contractor": { "anyOf": [ { "$ref": "#/components/schemas/InvoiceParticipant" }, { "type": "null" } ] }, "items": { "items": { "$ref": "#/components/schemas/PublicInvoiceItem" }, "type": "array", "title": "Items" }, "paymentMethods": { "items": { "anyOf": [ { "$ref": "#/components/schemas/IBANAccountDetails-Output" }, { "$ref": "#/components/schemas/USExternalAccountDetails-Output" }, { "$ref": "#/components/schemas/SwiftAccountDetails-Output" }, { "$ref": "#/components/schemas/PixAccountDetails-Output" }, { "$ref": "#/components/schemas/LocalRailAccountDetails-Output" }, { "$ref": "#/components/schemas/ProviderUsdAccountDetails-Output" }, { "$ref": "#/components/schemas/ContactWalletResponse" }, { "$ref": "#/components/schemas/EmailAccountInput" } ] }, "type": "array", "title": "Paymentmethods", "default": [] }, "contract": { "anyOf": [ { "$ref": "#/components/schemas/PublicInvoiceContractInfo" }, { "type": "null" } ] }, "documents": { "items": { "$ref": "#/components/schemas/InvoiceDocumentInfo" }, "type": "array", "title": "Documents", "default": [] }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" }, "invoiceId": { "type": "string", "format": "uuid", "title": "Invoiceid", "description": "Alias clients read instead of ``id``; the two can never disagree.", "readOnly": true } }, "type": "object", "required": [ "id", "amount", "currency", "status", "items", "createdAt", "invoiceId" ], "title": "PublicInvoiceResponse" }, "RecipientBlocker": { "properties": { "code": { "$ref": "#/components/schemas/RecipientBlockerCode" }, "message": { "type": "string", "title": "Message" }, "fields": { "items": { "type": "string" }, "type": "array", "title": "Fields" } }, "type": "object", "required": [ "code", "message" ], "title": "RecipientBlocker", "description": "One reason a payout is refused, and what would clear it." }, "RecipientBlockerCode": { "type": "string", "enum": [ "recipient_details_missing", "recipient_address_incomplete", "recipient_country_restricted", "recipient_holder_type_unsupported", "account_type_unsupported", "routing_unresolved", "no_active_bank", "no_rail_for_method", "currency_mismatch", "payout_feature_disabled", "payout_feature_on_request", "provider_not_configured", "sender_residency_ineligible", "sender_category_restricted", "endorsement_required", "channel_unavailable", "amount_below_minimum", "amount_above_maximum" ], "title": "RecipientBlockerCode", "description": "Why a payout cannot be made, in codes a client can branch on.\n\nThe message beside it is for a human; nothing should be parsed out of it." }, "RecipientCapabilitiesRequest": { "properties": { "contactId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Contactid" }, "account": { "anyOf": [ { "oneOf": [ { "$ref": "#/components/schemas/SepaAccountInput" }, { "$ref": "#/components/schemas/SwiftAccountInput" }, { "$ref": "#/components/schemas/AchAccountInput" }, { "$ref": "#/components/schemas/UaeAccountInput" }, { "$ref": "#/components/schemas/UkFpsAccountInput" }, { "$ref": "#/components/schemas/PixAccountInput" } ] }, { "type": "null" } ], "title": "Account", "description": "Recipient requisites" }, "address": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "amount": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Amount" } }, "type": "object", "title": "RecipientCapabilitiesRequest", "description": "Ask what a payout to one recipient would be allowed to do.\n\nEither end of the client's flow answers the same question, so the request\ntakes either: ``contactId`` for a recipient already saved, ``account`` for\nthe form that has not been submitted yet. ``amount`` is optional and only\nhas the rail limits checked against it — nothing is quoted or booked." }, "RecipientDocumentRules": { "properties": { "supported": { "type": "boolean", "title": "Supported", "default": false }, "required": { "type": "boolean", "title": "Required", "default": false } }, "type": "object", "title": "RecipientDocumentRules", "description": "Supporting documents the provider wants attached to the payout." }, "RecipientMemoRules": { "properties": { "supported": { "type": "boolean", "title": "Supported", "default": false }, "required": { "type": "boolean", "title": "Required", "default": false }, "minLength": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Minlength" }, "maxLength": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Maxlength" }, "requiredContent": { "items": { "type": "string" }, "type": "array", "title": "Requiredcontent" } }, "type": "object", "title": "RecipientMemoRules", "description": "What the rail accepts as a payment reference." }, "RecipientPayoutCapabilities": { "properties": { "recipient": { "$ref": "#/components/schemas/RecipientSummary" }, "available": { "type": "boolean", "title": "Available" }, "options": { "items": { "$ref": "#/components/schemas/RecipientPayoutOption" }, "type": "array", "title": "Options" }, "blockers": { "items": { "$ref": "#/components/schemas/RecipientBlocker" }, "type": "array", "title": "Blockers" } }, "type": "object", "required": [ "recipient", "available" ], "title": "RecipientPayoutCapabilities", "description": "Everything one recipient can be paid with, and what stands in the way." }, "RecipientPayoutOption": { "properties": { "provider": { "$ref": "#/components/schemas/FiatProvider" }, "bankAccountId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Bankaccountid" }, "bankRail": { "type": "string", "title": "Bankrail" }, "providerRail": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Providerrail" }, "method": { "type": "string", "title": "Method" }, "methodName": { "type": "string", "title": "Methodname" }, "currency": { "type": "string", "title": "Currency" }, "available": { "type": "boolean", "title": "Available" }, "minAmount": { "type": "number", "title": "Minamount" }, "maxAmount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Maxamount" }, "fixedFee": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fixedfee" }, "feeBps": { "type": "number", "title": "Feebps", "default": 0.0 }, "estimatedRecipientAmount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Estimatedrecipientamount" }, "amountToSupported": { "type": "boolean", "title": "Amounttosupported", "default": false }, "sourceTokens": { "items": { "$ref": "#/components/schemas/PayoutSourceToken" }, "type": "array", "title": "Sourcetokens" }, "memo": { "$ref": "#/components/schemas/RecipientMemoRules" }, "purpose": { "$ref": "#/components/schemas/RecipientPurposeRules" }, "documents": { "$ref": "#/components/schemas/RecipientDocumentRules" }, "blockers": { "items": { "$ref": "#/components/schemas/RecipientBlocker" }, "type": "array", "title": "Blockers" }, "live": { "type": "boolean", "title": "Live", "default": false } }, "type": "object", "required": [ "provider", "bankRail", "method", "methodName", "currency", "available", "minAmount" ], "title": "RecipientPayoutOption", "description": "One way this recipient can be paid: a bank rail of ours, a method, a\nprovider and everything that rail then demands.\n\n``available`` is the whole answer to \"can I send to this bank\": false with\nan empty ``blockers`` list never happens — something always says why." }, "RecipientPurposeRules": { "properties": { "supported": { "type": "boolean", "title": "Supported", "default": false }, "required": { "type": "boolean", "title": "Required", "default": false }, "defaultCode": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Defaultcode" }, "codes": { "items": { "type": "string" }, "type": "array", "title": "Codes" } }, "type": "object", "title": "RecipientPurposeRules", "description": "The purpose-of-payment vocabulary this rail asks for, if any." }, "RecipientSummary": { "properties": { "contactId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Contactid" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "method": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Method" }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "country": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Country" }, "bankCountry": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bankcountry" }, "maskedAccount": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Maskedaccount" }, "holderType": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Holdertype" }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "firstParty": { "type": "boolean", "title": "Firstparty", "default": false } }, "type": "object", "title": "RecipientSummary", "description": "Who is being paid, as the capabilities were resolved against them." }, "ReferrerInfo": { "properties": { "name": { "type": "string", "title": "Name" }, "email": { "type": "string", "title": "Email" }, "avatarUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Avatarurl" } }, "type": "object", "required": [ "name", "email" ], "title": "ReferrerInfo", "description": "Lightweight info about the user who referred this user." }, "RevenueCoverage": { "type": "string", "enum": [ "all_operating_expenses", "most", "some", "minimal" ], "title": "RevenueCoverage", "description": "Share of operating expenses covered by current business revenue." }, "RouteScope": { "type": "string", "enum": [ "apps", "apps-transfer", "balance", "transfer requests", "banks", "cards", "transactions", "exports", "merchant", "contracts", "invoices", "documents", "user", "team", "chat", "devices", "referrals", "public", "mcp", "xero", "admin", "admin sso", "kybagent", "b2b", "incorporate", "2fa", "auth", "activity", "tee", "tee-local", "utils", "webhook" ], "title": "RouteScope", "description": "Allowed values for ``ApiAppAccess.scope``.\n\nEach entry is the lowercased form of a FastAPI route tag — scope\nenforcement (``_enforce_api_app_scope`` in ``app/dependencies.py``)\nintersects the api-key's scopes with the calling route's tags\ncase-insensitively. Stored that way so admins editing an app's\n``access.scope`` see a stable, predictable set of values.\n\nAdding a new router tag? Add it here too so issued keys can target it." }, "SepaAccountInput": { "properties": { "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "accountType": { "type": "string", "const": "sepa", "title": "Accounttype", "default": "sepa" }, "iban": { "type": "string", "title": "Iban" }, "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bic" }, "currency": { "type": "string", "title": "Currency", "default": "EUR" }, "bankName": { "type": "string", "title": "Bankname" }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] } }, "type": "object", "required": [ "accountHolderType", "iban", "bankName" ], "title": "SepaAccountInput", "description": "SEPA bank contact input." }, "SetCardLabelRequest": { "properties": { "label": { "anyOf": [ { "type": "string", "maxLength": 64 }, { "type": "null" } ], "title": "Label", "description": "Label/nickname (null to clear)" } }, "type": "object", "title": "SetCardLabelRequest", "description": "Request to set a user-defined card label." }, "SetCardLimitRequest": { "properties": { "dailyLimit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Dailylimit", "description": "Daily limit. Set to -1 to disable." }, "monthlyLimit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Monthlylimit", "description": "Monthly limit. Set to -1 to disable." }, "lifetimeLimit": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Lifetimelimit", "description": "Lifetime limit. Set to -1 to disable." }, "currency": { "type": "string", "title": "Currency", "description": "Limit currency.", "default": "EUR" } }, "type": "object", "title": "SetCardLimitRequest", "description": "Request to set card spending limits." }, "SettlementMode": { "type": "string", "enum": [ "deposit_address", "transaction", "order_signature", "message_signature" ], "title": "SettlementMode", "description": "How a quoted route gets executed by the client." }, "SigningScheme": { "type": "string", "enum": [ "eip712", "eip1271" ], "title": "SigningScheme", "description": "How the client's signature over an order payload is produced." }, "SortOrder": { "type": "string", "enum": [ "asc", "desc" ], "title": "SortOrder", "description": "Sort direction." }, "SubmitPayoutQuoteRequest": { "properties": { "documentIds": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 10, "title": "Documentids" }, "documentId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Documentid" }, "quoteId": { "type": "string", "title": "Quoteid" }, "contactId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Contactid" }, "bankAccountId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Bankaccountid" }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "memo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Memo" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amount" }, "destinationChainId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Destinationchainid" }, "toCurrency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tocurrency" }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "transferPurpose": { "anyOf": [ { "$ref": "#/components/schemas/AlignTransferPurpose" }, { "type": "null" } ] }, "purposeCode": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Purposecode" } }, "type": "object", "required": [ "quoteId" ], "title": "SubmitPayoutQuoteRequest", "description": "Request to activate a payout quote." }, "SubmitPayoutQuoteResponse": { "properties": { "status": { "type": "string", "title": "Status" }, "executionContract": { "anyOf": [ { "$ref": "#/components/schemas/ExecutionContract" }, { "type": "null" } ] } }, "type": "object", "required": [ "status" ], "title": "SubmitPayoutQuoteResponse" }, "SubmitSwapQuoteRequest": { "properties": { "quoteId": { "type": "string", "title": "Quoteid" } }, "type": "object", "required": [ "quoteId" ], "title": "SubmitSwapQuoteRequest", "description": "Request to activate a swap quote." }, "SubscriptionPendingChangeResponse": { "properties": { "plan": { "$ref": "#/components/schemas/SubscriptionPlan" }, "period": { "type": "integer", "title": "Period" }, "amount": { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "title": "Amount" }, "effectiveAt": { "type": "string", "format": "date-time", "title": "Effectiveat" } }, "type": "object", "required": [ "plan", "period", "amount", "effectiveAt" ], "title": "SubscriptionPendingChangeResponse" }, "SubscriptionPermissionResponse": { "properties": { "permissionHash": { "type": "string", "title": "Permissionhash" }, "account": { "type": "string", "title": "Account" }, "spender": { "type": "string", "title": "Spender" }, "token": { "type": "string", "title": "Token" }, "allowance": { "type": "string", "title": "Allowance" }, "period": { "type": "integer", "title": "Period" }, "start": { "type": "integer", "title": "Start" }, "end": { "type": "integer", "title": "End" }, "salt": { "type": "string", "title": "Salt" }, "status": { "type": "string", "title": "Status" } }, "type": "object", "required": [ "permissionHash", "account", "spender", "token", "allowance", "period", "start", "end", "salt", "status" ], "title": "SubscriptionPermissionResponse" }, "SubscriptionPlan": { "type": "string", "enum": [ "base", "pro", "premium" ], "title": "SubscriptionPlan", "description": "Paid subscription plans." }, "SwapQuoteOption": { "properties": { "solver": { "type": "string", "title": "Solver" }, "provider": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Provider" }, "toAmount": { "type": "number", "title": "Toamount" }, "minToAmount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Mintoamount" }, "feeAmount": { "type": "number", "title": "Feeamount" }, "feeCurrency": { "type": "string", "title": "Feecurrency" }, "estimated": { "type": "boolean", "title": "Estimated", "default": false }, "etaHours": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Etahours" }, "expiresAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Expiresat" } }, "type": "object", "required": [ "solver", "toAmount", "feeAmount", "feeCurrency" ], "title": "SwapQuoteOption", "description": "One solver's answer for the same route, for client-side comparison." }, "SwapQuoteRequest": { "properties": { "from": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "string", "const": "hevn" } ], "title": "From", "default": "hevn" }, "to": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "string", "const": "hevn" } ], "title": "To", "default": "hevn" }, "fromToken": { "anyOf": [ { "$ref": "#/components/schemas/PayoutSourceToken" }, { "type": "null" } ] }, "toToken": { "anyOf": [ { "$ref": "#/components/schemas/PayoutSourceToken" }, { "type": "null" } ] }, "amount": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Amount" }, "amountTo": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Amountto" }, "swapType": { "$ref": "#/components/schemas/SwapType", "default": "FLEX_INPUT" }, "providers": { "anyOf": [ { "items": { "$ref": "#/components/schemas/CrossChainProvider" }, "type": "array" }, { "type": "null" } ], "title": "Providers" } }, "type": "object", "title": "SwapQuoteRequest", "description": "Quote a move between two accounts the user owns (docs/balance-swap.md).\n\n``from``/``to`` name the accounts and default to the HEVN wallet, so the\noriginal token-swap payload (``fromToken`` + ``toToken`` + ``amount``)\nstays valid." }, "SwapQuoteResponse": { "properties": { "quoteId": { "type": "string", "title": "Quoteid" }, "fromAmount": { "type": "number", "title": "Fromamount" }, "fromCurrency": { "type": "string", "title": "Fromcurrency" }, "toAmount": { "type": "number", "title": "Toamount" }, "toCurrency": { "type": "string", "title": "Tocurrency" }, "minToAmount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Mintoamount" }, "slippageBps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Slippagebps" }, "feeAmount": { "type": "number", "title": "Feeamount" }, "fixedFee": { "type": "number", "title": "Fixedfee", "default": 0 }, "flatFee": { "type": "number", "title": "Flatfee", "default": 0 }, "feeCurrency": { "type": "string", "title": "Feecurrency" }, "rate": { "type": "number", "title": "Rate" }, "expiresAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Expiresat" }, "provider": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Provider" }, "solver": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Solver" }, "estimated": { "type": "boolean", "title": "Estimated", "default": false }, "etaHours": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Etahours" }, "allQuotes": { "items": { "$ref": "#/components/schemas/SwapQuoteOption" }, "type": "array", "title": "Allquotes", "default": [] } }, "type": "object", "required": [ "quoteId", "fromAmount", "fromCurrency", "toAmount", "toCurrency", "feeAmount", "feeCurrency", "rate" ], "title": "SwapQuoteResponse", "description": "A price for one move, and every solver that answered.\n\nHow to execute it is submit's answer, not this one: two copies of the\ncontract would let a client sign the stale one." }, "SwapType": { "type": "string", "enum": [ "EXACT_INPUT", "EXACT_OUTPUT", "FLEX_INPUT", "ANY_INPUT" ], "title": "SwapType", "description": "Type of swap quote." }, "SwiftAccountDetails-Input": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "const": "swift", "title": "Accounttype", "default": "swift" }, "swift": { "$ref": "#/components/schemas/SwiftDetails" } }, "type": "object", "required": [ "bankName", "accountHolderType", "swift" ], "title": "SwiftAccountDetails", "description": "SWIFT (international wire) external account." }, "SwiftAccountDetails-Output": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "const": "swift", "title": "Accounttype", "default": "swift" }, "swift": { "$ref": "#/components/schemas/SwiftDetails" }, "beneficiaryName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Beneficiaryname", "description": "Frontend-only alias derived from account holder fields.", "readOnly": true } }, "type": "object", "required": [ "bankName", "accountHolderType", "swift", "beneficiaryName" ], "title": "SwiftAccountDetails", "description": "SWIFT (international wire) external account." }, "SwiftAccountInput": { "properties": { "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "accountType": { "type": "string", "const": "swift", "title": "Accounttype", "default": "swift" }, "bic": { "type": "string", "title": "Bic" }, "bankName": { "type": "string", "title": "Bankname" }, "accountNumber": { "type": "string", "title": "Accountnumber" }, "currency": { "type": "string", "title": "Currency", "default": "USD" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressInput" }, { "type": "null" } ] }, "routingNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Routingnumber" }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] } }, "type": "object", "required": [ "accountHolderType", "bic", "bankName", "accountNumber" ], "title": "SwiftAccountInput", "description": "SWIFT bank contact input." }, "SwiftDetails": { "properties": { "accountNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountnumber" }, "routingNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Routingnumber" }, "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bic" } }, "type": "object", "title": "SwiftDetails", "description": "SWIFT (international wire) account details." }, "TeamMemberRole": { "type": "string", "enum": [ "member", "admin", "owner" ], "title": "TeamMemberRole", "description": "Access a team member holds over the owner's account." }, "TokenApproval": { "properties": { "token": { "type": "string", "title": "Token" }, "spender": { "type": "string", "title": "Spender" }, "amount": { "type": "string", "title": "Amount" }, "transaction": { "$ref": "#/components/schemas/EvmTransactionRequest" } }, "type": "object", "required": [ "token", "spender", "amount", "transaction" ], "title": "TokenApproval", "description": "ERC-20 allowance the route needs before it can be executed.\n\nPresent only when the wallet's current allowance is short — the adapters\nread it on-chain, so a client that already approved gets ``None``." }, "TokenConfigResponse": { "properties": { "symbol": { "type": "string", "title": "Symbol" }, "decimals": { "type": "integer", "title": "Decimals" }, "address": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Address" }, "oneclickAssetId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Oneclickassetid" }, "native": { "type": "boolean", "title": "Native", "default": false }, "price": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Price" } }, "type": "object", "required": [ "symbol", "decimals" ], "title": "TokenConfigResponse", "description": "A first-class token on one chain, with its per-provider identifiers." }, "TokenDefResponse": { "properties": { "symbol": { "type": "string", "title": "Symbol" }, "peg": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Peg" } }, "type": "object", "required": [ "symbol" ], "title": "TokenDefResponse", "description": "Chain-independent facts about a token symbol." }, "TransactionAmountDetail": { "properties": { "currency": { "type": "string", "title": "Currency" }, "amount": { "type": "number", "title": "Amount" }, "usdRate": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Usdrate" }, "source": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source" } }, "type": "object", "required": [ "currency", "amount" ], "title": "TransactionAmountDetail", "description": "Currency / amount / rate leg of a transaction." }, "TransactionBreakdownGranularity": { "type": "string", "enum": [ "day", "week", "month" ], "title": "TransactionBreakdownGranularity", "description": "Time bucket size for the breakdown series." }, "TransactionBreakdownItem": { "properties": { "key": { "type": "string", "title": "Key" }, "volumeUsd": { "type": "number", "title": "Volumeusd" }, "count": { "type": "integer", "title": "Count" } }, "type": "object", "required": [ "key", "volumeUsd", "count" ], "title": "TransactionBreakdownItem", "description": "One bucket in a breakdown — volume + count for a tag/type value." }, "TransactionBreakdownResponse": { "properties": { "groupBy": { "$ref": "#/components/schemas/TransactionGroupBy" }, "items": { "items": { "$ref": "#/components/schemas/TransactionBreakdownItem" }, "type": "array", "title": "Items" } }, "type": "object", "required": [ "groupBy", "items" ], "title": "TransactionBreakdownResponse", "description": "Volume + count grouped by tag or type, with the same filters as the list." }, "TransactionBreakdownSeriesBucket": { "properties": { "bucketStart": { "type": "string", "format": "date-time", "title": "Bucketstart" }, "bucketEnd": { "type": "string", "format": "date-time", "title": "Bucketend" }, "items": { "items": { "$ref": "#/components/schemas/TransactionBreakdownItem" }, "type": "array", "title": "Items" } }, "type": "object", "required": [ "bucketStart", "bucketEnd", "items" ], "title": "TransactionBreakdownSeriesBucket", "description": "One time-bucket in a breakdown series, with the per-key items inside it." }, "TransactionBreakdownSeriesResponse": { "properties": { "groupBy": { "$ref": "#/components/schemas/TransactionGroupBy" }, "granularity": { "$ref": "#/components/schemas/TransactionBreakdownGranularity" }, "buckets": { "items": { "$ref": "#/components/schemas/TransactionBreakdownSeriesBucket" }, "type": "array", "title": "Buckets" } }, "type": "object", "required": [ "groupBy", "granularity", "buckets" ], "title": "TransactionBreakdownSeriesResponse", "description": "Time-bucketed volume + count grouped by tag or type.\n\nGranularity is auto-picked from the fromDate/toDate range: months for ranges\nlonger than 6 months, weeks for >30 days, days otherwise. The response\nalways includes every bucket in the range (zero-filled when empty) so the\nfrontend gets a complete x-axis." }, "TransactionCardDetail": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Label" }, "merchant": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Merchant" }, "merchantIcon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Merchanticon" }, "category": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category" } }, "type": "object", "title": "TransactionCardDetail", "description": "Card and merchant info for card transactions." }, "TransactionExportFormat": { "type": "string", "enum": [ "csv", "xlsx", "pdf" ], "title": "TransactionExportFormat" }, "TransactionExportScope": { "type": "string", "enum": [ "all", "bank", "fiat", "crypto" ], "title": "TransactionExportScope" }, "TransactionGroupBy": { "type": "string", "enum": [ "tag", "type" ], "title": "TransactionGroupBy", "description": "Field to group breakdown analytics by." }, "TransactionInvoiceInfo": { "properties": { "invoiceNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Invoicenumber" }, "periodStart": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Periodstart" }, "periodEnd": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Periodend" } }, "type": "object", "title": "TransactionInvoiceInfo", "description": "Invoice context for a transaction that settles an invoice." }, "TransactionSortBy": { "type": "string", "enum": [ "date", "amount" ], "title": "TransactionSortBy", "description": "Field to sort the transaction list by." }, "TransactionStatus": { "type": "string", "enum": [ "pending", "rfi", "success", "failed", "refunded" ], "title": "TransactionStatus", "description": "Unified transaction status." }, "TransactionSummary": { "properties": { "inflowUsd": { "type": "number", "title": "Inflowusd" }, "inflowCount": { "type": "integer", "title": "Inflowcount" }, "outflowUsd": { "type": "number", "title": "Outflowusd" }, "outflowCount": { "type": "integer", "title": "Outflowcount" }, "pendingInflowUsd": { "type": "number", "title": "Pendinginflowusd" }, "pendingInflowCount": { "type": "integer", "title": "Pendinginflowcount" }, "pendingOutflowUsd": { "type": "number", "title": "Pendingoutflowusd" }, "pendingOutflowCount": { "type": "integer", "title": "Pendingoutflowcount" } }, "type": "object", "required": [ "inflowUsd", "inflowCount", "outflowUsd", "outflowCount", "pendingInflowUsd", "pendingInflowCount", "pendingOutflowUsd", "pendingOutflowCount" ], "title": "TransactionSummary", "description": "Aggregate volumes and counts over the filtered transaction set.\n\nComputed without LIMIT/OFFSET — represents the entire filtered scope,\nnot just the current page. Returned only on the first page (offset=0);\nsubsequent pages omit it since it doesn't change with pagination." }, "TransactionType": { "type": "string", "enum": [ "sepa", "swift", "ach", "uaefts", "fedwire", "rtp", "fednow", "spei", "pse", "transfers_3_0", "ukfps", "swift-usd", "swift-eur", "wire", "pix", "crypto", "card", "internal", "refund", "oneclick", "move", "hevn_transfer", "subscription" ], "title": "TransactionType", "description": "Transaction type - payment rail.\n\nIncludes all ``FiatPaymentType`` values (sepa/swift/ach/uaefts) plus\nextended fiat variants (wire/swift-usd/swift-eur/fedwire/pix) and\nnon-fiat rails (crypto/card/internal/refund/oneclick/hevn_transfer).\n\n``oneclick``, ``move`` and ``hevn_transfer`` are not stored on\n``Transaction.type`` but are accepted as filter values for parity with the\nfrontend ``TransactionType`` enum (otherwise selecting the \"Transfers\"\ncategory, which sends ``hevn_transfer``, would 400 in ``parse_csv``)." }, "TransactionWalletDetail": { "properties": { "address": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Address" }, "chainId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Chainid" } }, "type": "object", "title": "TransactionWalletDetail", "description": "Wallet details for transaction list/detail views." }, "TransferRequestApproveRequest": { "properties": { "txHash": { "type": "string", "title": "Txhash" }, "transactionId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Transactionid" } }, "type": "object", "required": [ "txHash" ], "title": "TransferRequestApproveRequest", "description": "Body of the approve call.\n\nThe web app executes the transfer client-side through the normal send flow\n(funds leave the paying account's own wallet), then posts the resulting\non-chain hash here. That report is both the approving vote and the\nexecution receipt: the backend moves no money, it records what landed." }, "TransferRequestContact": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email" }, "walletAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Walletaddress" } }, "type": "object", "required": [ "id", "name" ], "title": "TransferRequestContact" }, "TransferRequestCreate": { "properties": { "contactId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Contactid" }, "quoteId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Quoteid" }, "invoiceId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Invoiceid" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amount" }, "memo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Memo" }, "accountId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Accountid" } }, "type": "object", "title": "TransferRequestCreate", "description": "Body of ``POST /transfer_requests``.\n\n``accountId`` is the account the money leaves — a company a teammate holds\na seat on. Omitted means their own account." }, "TransferRequestDeclineRequest": { "properties": { "reason": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Reason" } }, "type": "object", "title": "TransferRequestDeclineRequest" }, "TransferRequestInvoice": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "amount": { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "title": "Amount" }, "currency": { "type": "string", "title": "Currency" }, "status": { "type": "string", "title": "Status" }, "invoiceNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Invoicenumber" } }, "type": "object", "required": [ "id", "amount", "currency", "status" ], "title": "TransferRequestInvoice" }, "TransferRequestListItem": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "status": { "$ref": "#/components/schemas/TransferRequestStatus" }, "accountId": { "type": "string", "format": "uuid", "title": "Accountid" }, "appId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Appid" }, "apiKeyId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Apikeyid" }, "requestedByUserId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Requestedbyuserid" }, "transactionId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Transactionid" }, "contact": { "anyOf": [ { "$ref": "#/components/schemas/TransferRequestContact" }, { "type": "null" } ] }, "invoice": { "anyOf": [ { "$ref": "#/components/schemas/TransferRequestInvoice" }, { "type": "null" } ] }, "quote": { "anyOf": [ { "$ref": "#/components/schemas/TransferRequestQuote" }, { "type": "null" } ] }, "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amount" }, "memo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Memo" }, "requestedTime": { "type": "string", "format": "date-time", "title": "Requestedtime" }, "chatId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Chatid" } }, "type": "object", "required": [ "id", "status", "accountId", "requestedTime" ], "title": "TransferRequestListItem", "description": "A filed request with its payload references hydrated for display. A\ndecline reason lives in the thread (``chatId``), not here." }, "TransferRequestQuote": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "pendingId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Pendingid" }, "externalId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Externalid" }, "type": { "type": "string", "title": "Type" }, "status": { "type": "string", "title": "Status" }, "provider": { "type": "string", "title": "Provider" }, "amount": { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "title": "Amount" }, "currency": { "type": "string", "title": "Currency" }, "txHash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Txhash" } }, "type": "object", "required": [ "id", "type", "status", "provider", "amount", "currency" ], "title": "TransferRequestQuote" }, "TransferRequestResponse": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Id" }, "status": { "anyOf": [ { "$ref": "#/components/schemas/TransferRequestStatus" }, { "type": "null" } ] }, "txHash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Txhash" }, "transactionId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Transactionid" }, "accountId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Accountid" }, "appId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Appid" }, "requestedByUserId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Requestedbyuserid" }, "contactId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Contactid" }, "quoteId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Quoteid" }, "invoiceId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Invoiceid" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amount" }, "memo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Memo" }, "requestedTime": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Requestedtime" }, "chatId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Chatid" }, "approvalUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Approvalurl" } }, "type": "object", "title": "TransferRequestResponse", "description": "One outcome shape for both ways a transfer attempt can end.\n\nSpent straight away: ``txHash`` only. Needs approval: the request that was\nfiled, with the deep link to approve it. ``transactionId`` appears once an\napproved transfer has been reported back. A decline reason is not a field —\nit is a message in ``chatId``, the request's thread." }, "TransferRequestStatus": { "type": "string", "enum": [ "requested", "approved", "declined", "failed" ], "title": "TransferRequestStatus", "description": "Client-facing status of a ``transfer_request`` proposal.\n\nThe record is a proposal (seven statuses); this is the short vocabulary the\nAPI keeps for the agent and the web app, mapped from `ProposalStatus` by\n:meth:`from_proposal`." }, "TransferTargetContext": { "properties": { "contactId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Contactid" }, "quoteId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Quoteid" }, "invoiceId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Invoiceid" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Amount" }, "memo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Memo" } }, "type": "object", "title": "TransferTargetContext", "description": "What is being sent, and to whom.\n\nExactly one of ``contactId`` / ``quoteId`` / ``invoiceId`` must be set\n(mirrors the /mcp/transfer body). ``amount`` is required when ``contactId``\nis the dispatch path; otherwise it is derived from the referenced invoice\nor quote." }, "USAccountDetails": { "properties": { "accountNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountnumber" }, "routingNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Routingnumber" }, "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bic" } }, "type": "object", "title": "USAccountDetails", "description": "US domestic account details (ACH)." }, "USExternalAccountDetails-Input": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "enum": [ "ach", "fedwire" ], "title": "Accounttype", "default": "ach" }, "us": { "$ref": "#/components/schemas/USAccountDetails" } }, "type": "object", "required": [ "bankName", "accountHolderType", "us" ], "title": "USExternalAccountDetails", "description": "US domestic (ACH) external account." }, "USExternalAccountDetails-Output": { "properties": { "bankName": { "type": "string", "title": "Bankname" }, "bankAddress": { "anyOf": [ { "$ref": "#/components/schemas/BankAddressDetails" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Currency" }, "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "accountHolderAddress": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "accountType": { "type": "string", "enum": [ "ach", "fedwire" ], "title": "Accounttype", "default": "ach" }, "us": { "$ref": "#/components/schemas/USAccountDetails" }, "beneficiaryName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Beneficiaryname", "description": "Frontend-only alias derived from account holder fields.", "readOnly": true } }, "type": "object", "required": [ "bankName", "accountHolderType", "us", "beneficiaryName" ], "title": "USExternalAccountDetails", "description": "US domestic (ACH) external account." }, "UaeAccountInput": { "properties": { "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "accountType": { "type": "string", "const": "uaefts", "title": "Accounttype", "default": "uaefts" }, "bankName": { "type": "string", "title": "Bankname" }, "currency": { "type": "string", "title": "Currency", "default": "AED" }, "ibanNumber": { "type": "string", "title": "Ibannumber" }, "bic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bic" }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] } }, "type": "object", "required": [ "accountHolderType", "bankName", "ibanNumber" ], "title": "UaeAccountInput", "description": "UAE FTS bank contact input." }, "UboKycLink": { "properties": { "entityId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Entityid" }, "provider": { "$ref": "#/components/schemas/FiatProvider", "default": "conduit_fiat" }, "email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Email" }, "name": { "type": "string", "title": "Name" }, "status": { "type": "string", "title": "Status" }, "link": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Link" }, "expiresAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Expiresat" } }, "type": "object", "required": [ "name", "status" ], "title": "UboKycLink" }, "UkFpsAccountInput": { "properties": { "accountHolderType": { "$ref": "#/components/schemas/AlignAccountHolderType" }, "accountHolderFirstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderfirstname" }, "accountHolderLastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderlastname" }, "accountHolderBusinessName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Accountholderbusinessname" }, "businessIndustry": { "anyOf": [ { "type": "string", "pattern": "^\\d{6}$" }, { "type": "null" } ], "title": "Businessindustry", "description": "6-digit NAICS 2022 industry code for business recipients. Required by Swipelux before US ACH payout destinations of business recipients can be activated; ignored for individual recipients." }, "accountType": { "type": "string", "const": "ukfps", "title": "Accounttype", "default": "ukfps" }, "bankName": { "type": "string", "title": "Bankname" }, "accountNumber": { "type": "string", "title": "Accountnumber" }, "sortCode": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sortcode" }, "routingNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Routingnumber" }, "currency": { "type": "string", "title": "Currency", "default": "GBP" }, "relationship": { "anyOf": [ { "$ref": "#/components/schemas/ContactRelationship" }, { "type": "null" } ] } }, "type": "object", "required": [ "accountHolderType", "bankName", "accountNumber" ], "title": "UkFpsAccountInput", "description": "UK Faster Payments bank contact input." }, "UnifiedTransactionItem": { "properties": { "id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Id" }, "onchainTransactionId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Onchaintransactionid" }, "txHash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Txhash" }, "type": { "type": "string", "title": "Type" }, "name": { "type": "string", "title": "Name" }, "time": { "type": "string", "format": "date-time", "title": "Time" }, "status": { "$ref": "#/components/schemas/TransactionStatus" }, "isIncome": { "type": "boolean", "title": "Isincome" }, "tag": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tag" }, "spendLineId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Spendlineid" }, "from": { "$ref": "#/components/schemas/TransactionAmountDetail" }, "to": { "anyOf": [ { "$ref": "#/components/schemas/TransactionAmountDetail" }, { "type": "null" } ] }, "fee": { "anyOf": [ { "$ref": "#/components/schemas/TransactionAmountDetail" }, { "type": "null" } ] }, "destinationChainId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Destinationchainid" }, "usdBalanceAfter": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Usdbalanceafter" }, "card": { "anyOf": [ { "$ref": "#/components/schemas/TransactionCardDetail" }, { "type": "null" } ] }, "invoice": { "anyOf": [ { "$ref": "#/components/schemas/TransactionInvoiceInfo" }, { "type": "null" } ] }, "userFrom": { "anyOf": [ { "$ref": "#/components/schemas/UserPreview" }, { "type": "null" } ] }, "userTo": { "anyOf": [ { "$ref": "#/components/schemas/UserPreview" }, { "type": "null" } ] }, "walletFrom": { "anyOf": [ { "$ref": "#/components/schemas/TransactionWalletDetail" }, { "type": "null" } ] }, "walletTo": { "anyOf": [ { "$ref": "#/components/schemas/TransactionWalletDetail" }, { "type": "null" } ] }, "ibanFrom": { "anyOf": [ { "$ref": "#/components/schemas/IBANAccountDetails-Output" }, { "$ref": "#/components/schemas/USExternalAccountDetails-Output" }, { "$ref": "#/components/schemas/SwiftAccountDetails-Output" }, { "$ref": "#/components/schemas/PixAccountDetails-Output" }, { "$ref": "#/components/schemas/LocalRailAccountDetails-Output" }, { "$ref": "#/components/schemas/ProviderUsdAccountDetails-Output" }, { "type": "null" } ], "title": "Ibanfrom" }, "ibanTo": { "anyOf": [ { "$ref": "#/components/schemas/IBANAccountDetails-Output" }, { "$ref": "#/components/schemas/USExternalAccountDetails-Output" }, { "$ref": "#/components/schemas/SwiftAccountDetails-Output" }, { "$ref": "#/components/schemas/PixAccountDetails-Output" }, { "$ref": "#/components/schemas/LocalRailAccountDetails-Output" }, { "$ref": "#/components/schemas/ProviderUsdAccountDetails-Output" }, { "type": "null" } ], "title": "Ibanto" }, "approved": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Approved" }, "remitter": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Remitter" }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "traceNumber": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tracenumber" }, "hasAttachments": { "type": "boolean", "title": "Hasattachments", "default": false } }, "type": "object", "required": [ "type", "name", "time", "status", "isIncome", "from" ], "title": "UnifiedTransactionItem", "description": "Unified transaction item for the transaction list.\n\nLegacy directional fields are still included for compatibility." }, "UnifiedTransactionListResponse": { "properties": { "transactions": { "items": { "$ref": "#/components/schemas/UnifiedTransactionItem" }, "type": "array", "title": "Transactions" }, "summary": { "anyOf": [ { "$ref": "#/components/schemas/TransactionSummary" }, { "type": "null" } ] } }, "type": "object", "required": [ "transactions" ], "title": "UnifiedTransactionListResponse", "description": "Unified transaction list response." }, "UniversalQuoteResponse": { "properties": { "quoteId": { "type": "string", "title": "Quoteid" }, "provider": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Provider" }, "documentIds": { "items": { "type": "string", "format": "uuid" }, "type": "array", "title": "Documentids" }, "paymentReference": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Paymentreference" }, "paymentChannel": { "type": "string", "title": "Paymentchannel" }, "fromAmount": { "type": "number", "title": "Fromamount" }, "fromCurrency": { "type": "string", "title": "Fromcurrency" }, "toAmount": { "type": "number", "title": "Toamount" }, "minToAmount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Mintoamount" }, "slippageBps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Slippagebps" }, "depositMemo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Depositmemo" }, "toCurrency": { "type": "string", "title": "Tocurrency" }, "feeAmount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Feeamount" }, "fixedFee": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fixedfee" }, "flatFee": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Flatfee" }, "feeCurrency": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Feecurrency" }, "rate": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Rate" }, "expiresAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Expiresat" }, "depositAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Depositaddress" }, "recipientAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Recipientaddress" }, "originChainId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Originchainid" }, "destinationChainId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Destinationchainid" } }, "type": "object", "required": [ "quoteId", "paymentChannel", "fromAmount", "fromCurrency", "toAmount", "toCurrency" ], "title": "UniversalQuoteResponse", "description": "What a quote prices, and nothing else.\n\nRail rules — whether a reference is accepted, the floor on the amount, the\nfee schedule behind it — belong to\n``POST /balance/payout/recipient/capabilities``, which the client reads\nbefore it prices anything. Repeating them here only gave two sources for\none fact.\n\nWhat this price *is*, on the other hand, includes how far it can move:\n``minToAmount`` and ``slippageBps`` are not rail rules but this quote's own\nworst case, and only the provider that priced it knows them." }, "UniversalTransactionResponse": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "quoteId": { "type": "string", "title": "Quoteid" }, "type": { "type": "string", "title": "Type" }, "paymentChannel": { "type": "string", "title": "Paymentchannel" }, "status": { "type": "string", "title": "Status" }, "fromAmount": { "type": "number", "title": "Fromamount" }, "fromCurrency": { "type": "string", "title": "Fromcurrency" }, "toAmount": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Toamount" }, "toCurrency": { "type": "string", "title": "Tocurrency" }, "originTxHash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Origintxhash" }, "destinationTxHash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Destinationtxhash" }, "depositAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Depositaddress" }, "errorMessage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Errormessage" }, "expiresAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Expiresat" }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" } }, "type": "object", "required": [ "id", "quoteId", "type", "paymentChannel", "status", "fromAmount", "fromCurrency", "toCurrency", "createdAt" ], "title": "UniversalTransactionResponse", "description": "Universal transaction response." }, "UpdateContractPaymentMethodsRequest": { "properties": { "paymentMethods": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Paymentmethods" } }, "type": "object", "title": "UpdateContractPaymentMethodsRequest", "description": "Payment methods the contractor wants to be paid on." }, "UpdateContractRequest": { "properties": { "label": { "anyOf": [ { "type": "string", "maxLength": 200 }, { "type": "null" } ], "title": "Label" }, "type": { "anyOf": [ { "$ref": "#/components/schemas/ContractType" }, { "type": "null" } ] }, "terms": { "anyOf": [ { "$ref": "#/components/schemas/ContractTermsInput-Input" }, { "type": "null" } ] }, "billing": { "anyOf": [ { "$ref": "#/components/schemas/BillingCycleInput" }, { "type": "null" } ] }, "priorityMethods": { "anyOf": [ { "items": { "$ref": "#/components/schemas/TransactionType" }, "type": "array" }, { "type": "null" } ], "title": "Prioritymethods" } }, "type": "object", "title": "UpdateContractRequest", "description": "Patch a contract's label, terms or billing cycle.\n\nEvery field is optional; only the ones present in the request body are\napplied, so a caller can move the schedule without resending the terms." }, "UpdateInvoiceRequest": { "properties": { "onchainTransactionId": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Onchaintransactionid" }, "status": { "$ref": "#/components/schemas/InvoiceStatus" }, "paidAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Paidat" } }, "type": "object", "required": [ "status" ], "title": "UpdateInvoiceRequest", "description": "Request to update an invoice.\n\nMark an invoice paid with or without a transaction:\n- `status: paid` alone marks it paid offline (no linked transaction).\n- `onchainTransactionId` optionally attaches a custom transaction reference\n (any unique string — an on-chain id, a bank wire ref, etc.).\n- `paidAt` optionally backdates the payment; defaults to now." }, "UploadedDocumentListResponse": { "properties": { "documents": { "items": { "$ref": "#/components/schemas/DocumentDraftInfo" }, "type": "array", "title": "Documents" } }, "type": "object", "required": [ "documents" ], "title": "UploadedDocumentListResponse", "description": "Response for user-uploaded documents list." }, "UserAddress": { "properties": { "streetAddress": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Streetaddress" }, "addressLine2": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Addressline2" }, "city": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "City" }, "state": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "State" }, "country": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ] }, "zip": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Zip" } }, "type": "object", "title": "UserAddress", "description": "Address schema for user.\n\nCanonical field names: street_address, address_line_2, city, state, country, zip.\nAccepts legacy Align/IBAN field names (street_line_1, street_line_2, postal_code)\nfor backward compatibility with existing JSONB data." }, "UserCreateRequest": { "properties": { "firstName": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 1 }, { "type": "null" } ], "title": "Firstname" }, "lastName": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 1 }, { "type": "null" } ], "title": "Lastname" }, "country": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ] }, "jurisdiction": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ] }, "birthDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Birthdate", "description": "Birth date in ISO format" }, "birthCountry": { "anyOf": [ { "$ref": "#/components/schemas/CountryCode" }, { "type": "null" } ], "description": "Country of birth in ISO 3166-1 alpha-2 format" }, "isBusiness": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Isbusiness" }, "entityName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entityname" }, "phone": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Phone" }, "website": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Website" }, "address": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "avatarUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Avatarurl" }, "contactInfo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Contactinfo" }, "inviteCode": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Invitecode", "description": "Invite code from referrer" } }, "type": "object", "title": "UserCreateRequest", "description": "Request schema for creating a user." }, "UserPreview": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "email": { "type": "string", "title": "Email" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "avatarUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Avatarurl" }, "address": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Address" } }, "type": "object", "required": [ "id", "email" ], "title": "UserPreview", "description": "Lightweight user preview (for transaction participants, etc.)." }, "UserResponse": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "email": { "type": "string", "title": "Email" }, "phone": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Phone" }, "avatarUrl": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Avatarurl" }, "contactInfo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Contactinfo" }, "firstName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Firstname" }, "middleName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Middlename" }, "lastName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lastname" }, "entityName": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entityname" }, "birthDate": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Birthdate" }, "birthCountry": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Birthcountry" }, "country": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Country" }, "jurisdiction": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Jurisdiction" }, "address": { "anyOf": [ { "$ref": "#/components/schemas/UserAddress" }, { "type": "null" } ] }, "fiatRails": { "items": { "$ref": "#/components/schemas/FiatRailResponse" }, "type": "array", "title": "Fiatrails", "default": [] }, "isBusiness": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Isbusiness" }, "plan": { "type": "string", "title": "Plan", "default": "free" }, "subscription": { "anyOf": [ { "$ref": "#/components/schemas/UserSubscriptionResponse" }, { "type": "null" } ] }, "referrer": { "anyOf": [ { "$ref": "#/components/schemas/ReferrerInfo" }, { "type": "null" } ] }, "affiliatedTo": { "anyOf": [ { "$ref": "#/components/schemas/AffiliatedToInfo" }, { "type": "null" } ] }, "createdAt": { "type": "string", "format": "date-time", "title": "Createdat" }, "updatedAt": { "type": "string", "format": "date-time", "title": "Updatedat" }, "pushNotificationAllowed": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Pushnotificationallowed" }, "myIp": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Myip" }, "bankRequested": { "$ref": "#/components/schemas/BankRequestedSettings-Output" }, "tosTs": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Tosts" }, "appId": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Appid" } }, "type": "object", "required": [ "id", "email", "phone", "avatarUrl", "createdAt", "updatedAt" ], "title": "UserResponse", "description": "Schema for user response." }, "UserSubscriptionResponse": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "status": { "type": "string", "title": "Status" }, "planId": { "type": "string", "format": "uuid", "title": "Planid" }, "plan": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Plan" }, "period": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Period" }, "endedAt": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Endedat" }, "cancelAtPeriodEnd": { "type": "boolean", "title": "Cancelatperiodend", "default": false }, "amountDue": { "type": "string", "title": "Amountdue", "default": "0" }, "pendingChange": { "anyOf": [ { "$ref": "#/components/schemas/SubscriptionPendingChangeResponse" }, { "type": "null" } ] }, "spendPermissionActive": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Spendpermissionactive" }, "permission": { "anyOf": [ { "$ref": "#/components/schemas/SubscriptionPermissionResponse" }, { "type": "null" } ] } }, "type": "object", "required": [ "id", "status", "planId", "endedAt" ], "title": "UserSubscriptionResponse", "description": "Current subscription summary embedded into GET /user." }, "ValidationError": { "properties": { "loc": { "items": { "anyOf": [ { "type": "string" }, { "type": "integer" } ] }, "type": "array", "title": "Location" }, "msg": { "type": "string", "title": "Message" }, "type": { "type": "string", "title": "Error Type" } }, "type": "object", "required": [ "loc", "msg", "type" ], "title": "ValidationError" }, "WalletType": { "type": "string", "enum": [ "omni", "base-main", "swipelux", "mcp", "base-aa-wallet", "wirex", "conduit-fiat" ], "title": "WalletType" } }, "securitySchemes": { "HTTPBearer": { "type": "http", "scheme": "bearer" }, "ApiKeyAuth": { "type": "apiKey", "in": "header", "name": "X-Api-Key", "description": "HEVN app API key (`hvn_...`), sent in the `X-Api-Key` header. Issue keys in the HEVN app (Settings → API Keys) or via `hevn login`." } } } }