{"openapi":"3.1.0","info":{"title":"finDIGI Backend API","version":"0.1.0","description":"Generated OpenAPI surface for FE developer docs, endpoint explorer, and sandbox/API challenge flows."},"servers":[{"url":"https://findigi-backend-production.up.railway.app","description":"Production/public API base"},{"url":"http://localhost:3001","description":"Local development"}],"tags":[{"name":"Analytics","description":"Dashboard charts and summaries."},{"name":"Approvals","description":"Maker-checker approval lifecycle and pending actions."},{"name":"Auth","description":"Authentication, session issuance, and workspace bootstrap."},{"name":"Batch Transfer","description":"Bulk payout and approval-aware batch transfer flows."},{"name":"Cards"},{"name":"Chains"},{"name":"FinVault","description":"FinVault wallets, onramp/offramp, swaps, bridges, and history."},{"name":"FX / Tickers","description":"Reference FX quotes and dashboard ticker feed."},{"name":"Ledger"},{"name":"My Clients","description":"Client onboarding and workspace membership surface."},{"name":"Notifications","description":"Bell and unread notification feed."},{"name":"Providers"},{"name":"Public Docs","description":"Public landing-site docs and FinChat support."},{"name":"Settings / Security / 2FA","description":"Security, 2FA, workspace members, saved cards, and address book."},{"name":"Transactions"},{"name":"Transfer to Bank / Card to Bank","description":"Fiat payout, transfer-to-bank, and settlement style operational flows."},{"name":"Transfer to Wallet","description":"Transfer-to-wallet / payin-style request surface."},{"name":"Users"},{"name":"Verification","description":"Operational verification for B2C and B2B workspaces."},{"name":"Wallet Transfer","description":"Fiat wallet management, balances, history, and internal wallet transfers."}],"paths":{"/api/analytics/cashflow":{"get":{"tags":["Analytics"],"summary":"GET analytics cashflow for Analytics","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/analytics/liquidity-history":{"get":{"tags":["Analytics"],"summary":"GET analytics liquidity-history for Analytics","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/analytics/summary":{"get":{"tags":["Analytics"],"summary":"GET analytics summary for Analytics","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/approvals":{"get":{"tags":["Approvals"],"summary":"GET approvals for Approvals","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Approvals"],"summary":"POST approvals for Approvals","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/approvals/:id":{"get":{"tags":["Approvals"],"summary":"GET approvals :id for Approvals","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/approvals/:id/approve":{"post":{"tags":["Approvals"],"summary":"POST :id approve for Approvals","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/approvals/:id/reject":{"post":{"tags":["Approvals"],"summary":"POST :id reject for Approvals","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/auth/forgot-password":{"post":{"tags":["Auth"],"summary":"POST auth forgot-password for Auth","description":"","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/auth/login":{"post":{"tags":["Auth"],"summary":"POST auth login for Auth","description":"","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"email":"alpha.tester@findigi.local","password":"<password>"}}}}}},"/api/auth/login/2fa/resend":{"post":{"tags":["Auth"],"summary":"POST 2fa resend for Auth","description":"","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/auth/login/2fa/verify":{"post":{"tags":["Auth"],"summary":"POST 2fa verify for Auth","description":"","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/auth/me":{"get":{"tags":["Auth"],"summary":"GET auth me for Auth","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/auth/my-clients":{"get":{"tags":["Auth"],"summary":"GET auth my-clients for Auth","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/auth/register":{"post":{"tags":["Auth"],"summary":"POST auth register for Auth","description":"","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/auth/reset-password":{"post":{"tags":["Auth"],"summary":"POST auth reset-password for Auth","description":"","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/batch-transfers":{"get":{"tags":["Batch Transfer"],"summary":"GET batch-transfers for Batch Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Batch Transfer"],"summary":"POST batch-transfers for Batch Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>","source_wallet_id":"<wallet_id>","execution_mode":"immediate","items":[{"beneficiary_id":"<beneficiary_id>","amount":"100000"}]}}}}}},"/api/batch-transfers/:id":{"get":{"tags":["Batch Transfer"],"summary":"GET batch-transfers :id for Batch Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/batch-transfers/:id/cancel":{"post":{"tags":["Batch Transfer"],"summary":"POST :id cancel for Batch Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/batch-transfers/:id/execute-now":{"post":{"tags":["Batch Transfer"],"summary":"POST :id execute-now for Batch Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/batch-transfers/:id/items":{"get":{"tags":["Batch Transfer"],"summary":"GET :id items for Batch Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/cards":{"get":{"tags":["Cards"],"summary":"GET cards for Cards","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/chains":{"get":{"tags":["Chains"],"summary":"GET chains for Chains","description":"","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[]}},"/api/chains/:code/tokens":{"get":{"tags":["Chains"],"summary":"GET :code tokens for Chains","description":"","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[]}},"/api/finvault/assets":{"get":{"tags":["FinVault"],"summary":"GET finvault assets for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/finvault/bridges":{"post":{"tags":["FinVault"],"summary":"POST finvault bridges for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>","source_wallet_id":"<source_wallet_id>","destination_wallet_id":"<destination_wallet_id>","source_asset_id":"<source_asset_id>","destination_asset_id":"<destination_asset_id>","amount":"10"}}}}}},"/api/finvault/custodial/options":{"get":{"tags":["FinVault"],"summary":"GET custodial options for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/finvault/custodial/preview":{"post":{"tags":["FinVault"],"summary":"POST custodial preview for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/finvault/custodial/wallets":{"post":{"tags":["FinVault"],"summary":"POST custodial wallets for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/finvault/offramp":{"post":{"tags":["FinVault"],"summary":"POST finvault offramp for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/finvault/offramp/quote":{"post":{"tags":["FinVault"],"summary":"POST offramp quote for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>","wallet_id":"<finvault_wallet_id>","source_asset_id":"<finvault_asset_id>","amount":"1.25","fiat_currency":"IDR"}}}}}},"/api/finvault/onchain":{"post":{"tags":["FinVault"],"summary":"POST finvault onchain for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/finvault/onramp":{"post":{"tags":["FinVault"],"summary":"POST finvault onramp for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>","wallet_id":"<finvault_wallet_id>","destination_asset_id":"<finvault_asset_id>","fiat_amount":"50000","fiat_currency":"IDR","description":"Public-site testnet onramp"}}}}}},"/api/finvault/onramp/quote":{"post":{"tags":["FinVault"],"summary":"POST onramp quote for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>","wallet_id":"<finvault_wallet_id>","destination_asset_id":"<finvault_asset_id>","fiat_amount":"50000","fiat_currency":"IDR"}}}}}},"/api/finvault/swaps":{"post":{"tags":["FinVault"],"summary":"POST finvault swaps for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>","wallet_id":"<finvault_wallet_id>","source_asset_id":"<source_asset_id>","destination_asset_id":"<destination_asset_id>","amount":"10"}}}}}},"/api/finvault/transactions":{"get":{"tags":["FinVault"],"summary":"GET finvault transactions for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/finvault/transactions/:transactionId":{"get":{"tags":["FinVault"],"summary":"GET transactions :transactionId for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/finvault/wallets":{"get":{"tags":["FinVault"],"summary":"GET finvault wallets for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["FinVault"],"summary":"POST finvault wallets for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/finvault/wallets/:walletId":{"get":{"tags":["FinVault"],"summary":"GET wallets :walletId for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/finvault/wallets/:walletId/balances":{"get":{"tags":["FinVault"],"summary":"GET :walletId balances for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/finvault/wallets/:walletId/make-primary":{"post":{"tags":["FinVault"],"summary":"POST :walletId make-primary for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/finvault/wallets/:walletId/sync":{"post":{"tags":["FinVault"],"summary":"POST :walletId sync for FinVault","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership. Send x-findigi-is-test: true for sandbox/testnet flows. Company/B2B clients may return awaiting_approval depending on approval_mode.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/fx/quote":{"get":{"tags":["FX / Tickers"],"summary":"Get a reference FX quote for a specific pair.","description":"Ticker endpoints return freshness metadata so FE can show the latest safe snapshot.","parameters":[{"name":"base","in":"query","required":true,"schema":{"type":"string"},"example":"USD"},{"name":"quote","in":"query","required":true,"schema":{"type":"string"},"example":"IDR"},{"name":"ttl","in":"query","required":true,"schema":{"type":"number"},"example":15},{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[]}},"/api/fx/tickers":{"get":{"tags":["FX / Tickers"],"summary":"Fetch the dashboard FX ticker feed with freshness and 12-hour trend metadata.","description":"Ticker endpoints return freshness metadata so FE can show the latest safe snapshot.","parameters":[{"name":"pairs","in":"query","required":true,"schema":{"type":"string"},"example":"USD/IDR,USDT/IDR,USDC/IDR,USD/SGD,USDT/SGD,USDC/SGD"},{"name":"min_fresh_seconds","in":"query","required":true,"schema":{"type":"number"},"example":15},{"name":"change_window_hours","in":"query","required":true,"schema":{"type":"number"},"example":12},{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true,"change_window_hours":12,"items":[{"pair":"USD/IDR","rate":"17097.0000000000","previous_rate":"17010.0000000000","change_value":"87.0000000000","change_pct":"0.5115","trend_direction":"up","baseline_quoted_at":"2026-04-10T18:00:00.000Z","comparison_available":true,"age_seconds":4,"is_expired":false,"is_fresh":true}]}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[]}},"/api/ledger/accounts":{"get":{"tags":["Ledger"],"summary":"GET ledger accounts for Ledger","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/ledger/journals":{"get":{"tags":["Ledger"],"summary":"GET ledger journals for Ledger","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Ledger"],"summary":"POST ledger journals for Ledger","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/ledger/journals/:id":{"get":{"tags":["Ledger"],"summary":"GET journals :id for Ledger","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/ledger/journals/:id/post":{"post":{"tags":["Ledger"],"summary":"POST :id post for Ledger","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/clients":{"get":{"tags":["My Clients"],"summary":"GET clients for My Clients","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["My Clients"],"summary":"POST clients for My Clients","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/clients/:id":{"get":{"tags":["My Clients"],"summary":"GET clients :id for My Clients","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/clients/:id/onboard":{"post":{"tags":["My Clients"],"summary":"POST :id onboard for My Clients","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/clients/:id/users":{"get":{"tags":["My Clients"],"summary":"GET :id users for My Clients","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["My Clients"],"summary":"POST :id users for My Clients","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/clients/onboard":{"post":{"tags":["My Clients"],"summary":"POST clients onboard for My Clients","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/notifications":{"get":{"tags":["Notifications"],"summary":"GET notifications for Notifications","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/notifications/:id/read":{"post":{"tags":["Notifications"],"summary":"POST :id read for Notifications","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/notifications/unread-count":{"get":{"tags":["Notifications"],"summary":"GET notifications unread-count for Notifications","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/providers/accounts":{"post":{"tags":["Providers"],"summary":"POST providers accounts for Providers","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/providers/accounts/:client_id":{"get":{"tags":["Providers"],"summary":"GET accounts :client_id for Providers","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/providers/xendit/:client_id":{"get":{"tags":["Providers"],"summary":"GET xendit :client_id for Providers","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/providers/xendit/subaccount":{"post":{"tags":["Providers"],"summary":"POST xendit subaccount for Providers","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/providers/xendit/webhook":{"post":{"tags":["Providers"],"summary":"POST xendit webhook for Providers","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/docs/health":{"get":{"tags":["Public Docs"],"summary":"Docs manifest health and sandbox metadata.","description":"","parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true,"route_count":50,"openapi_url":"/api/openapi.json"}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[]}},"/api/docs/manifest":{"get":{"tags":["Public Docs"],"summary":"Structured docs manifest and FE navigation payload.","description":"","parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[]}},"/api/docs/postman":{"get":{"tags":["Public Docs"],"summary":"Download a generated Postman collection for the current API surface.","description":"","parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[]}},"/api/docs/postman.json":{"get":{"tags":["Public Docs"],"summary":"Alternate Postman collection endpoint for public docs tooling.","description":"","parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[]}},"/api/finchat":{"post":{"tags":["Public Docs"],"summary":"Ask FinChat about FinDIGI products, docs, roadmap, and testing.","description":"message is required; history is optional. Safe fallback response is returned if no specialized intent is detected.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"answer":"Use the Developers page and send the x-findigi-is-test header for sandbox calls.","actions":[{"label":"Open Developers","href":"/developers"},{"label":"Open Services","href":"/services"}]}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"message":"How do I test the API?","history":[{"role":"user","content":"Show me the sandbox flow."}]}}}}}},"/api/openapi.json":{"get":{"tags":["Public Docs"],"summary":"Fetch the generated OpenAPI spec for the current backend surface.","description":"Use this as the source of truth for FE docs navigation and endpoint explorer generation.","parameters":[],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"openapi":"3.1.0","info":{"title":"finDIGI Backend API","version":"0.1.0"}}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[]}},"/api/settings/address-book":{"get":{"tags":["Settings / Security / 2FA"],"summary":"GET settings address-book for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Settings / Security / 2FA"],"summary":"POST settings address-book for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/address-book/:entryId":{"delete":{"tags":["Settings / Security / 2FA"],"summary":"DELETE address-book :entryId for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["Settings / Security / 2FA"],"summary":"PATCH address-book :entryId for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/approval":{"get":{"tags":["Settings / Security / 2FA"],"summary":"GET settings approval for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["Settings / Security / 2FA"],"summary":"PATCH settings approval for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/approval/assignments":{"post":{"tags":["Settings / Security / 2FA"],"summary":"POST approval assignments for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/approval/assignments/:assignmentId":{"delete":{"tags":["Settings / Security / 2FA"],"summary":"DELETE assignments :assignmentId for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/settings/approval/assignments/:assignmentId/accept":{"post":{"tags":["Settings / Security / 2FA"],"summary":"POST :assignmentId accept for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/approval/assignments/:assignmentId/decline":{"post":{"tags":["Settings / Security / 2FA"],"summary":"POST :assignmentId decline for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/approval/assignments/pending":{"get":{"tags":["Settings / Security / 2FA"],"summary":"GET assignments pending for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/settings/approval/members":{"get":{"tags":["Settings / Security / 2FA"],"summary":"GET approval members for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/settings/banks":{"get":{"tags":["Settings / Security / 2FA"],"summary":"GET settings banks for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Settings / Security / 2FA"],"summary":"POST settings banks for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/banks/:bankId":{"delete":{"tags":["Settings / Security / 2FA"],"summary":"DELETE banks :bankId for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["Settings / Security / 2FA"],"summary":"PATCH banks :bankId for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/cards":{"get":{"tags":["Settings / Security / 2FA"],"summary":"GET settings cards for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Settings / Security / 2FA"],"summary":"POST settings cards for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/cards/:cardId":{"delete":{"tags":["Settings / Security / 2FA"],"summary":"DELETE cards :cardId for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["Settings / Security / 2FA"],"summary":"PATCH cards :cardId for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/client":{"patch":{"tags":["Settings / Security / 2FA"],"summary":"PATCH settings client for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/fees":{"get":{"tags":["Settings / Security / 2FA"],"summary":"GET settings fees for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["Settings / Security / 2FA"],"summary":"PATCH settings fees for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/me":{"get":{"tags":["Settings / Security / 2FA"],"summary":"GET settings me for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/settings/security":{"get":{"tags":["Settings / Security / 2FA"],"summary":"GET settings security for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/settings/security/2fa/confirm":{"post":{"tags":["Settings / Security / 2FA"],"summary":"POST 2fa confirm for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/security/2fa/disable/confirm":{"post":{"tags":["Settings / Security / 2FA"],"summary":"POST disable confirm for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/security/2fa/disable/start":{"post":{"tags":["Settings / Security / 2FA"],"summary":"POST disable start for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/security/2fa/start":{"post":{"tags":["Settings / Security / 2FA"],"summary":"POST 2fa start for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/settings/user":{"patch":{"tags":["Settings / Security / 2FA"],"summary":"PATCH settings user for Settings / Security / 2FA","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/transactions":{"get":{"tags":["Transactions"],"summary":"GET transactions for Transactions","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/fiat/card-to-bank":{"post":{"tags":["Transfer to Bank / Card to Bank"],"summary":"POST fiat card-to-bank for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/fiat/card-to-bank/:id":{"get":{"tags":["Transfer to Bank / Card to Bank"],"summary":"GET card-to-bank :id for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/fiat/card-to-bank/quote":{"post":{"tags":["Transfer to Bank / Card to Bank"],"summary":"POST card-to-bank quote for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/fiat/instructions":{"get":{"tags":["Transfer to Bank / Card to Bank"],"summary":"GET fiat instructions for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/fiat/instructions/:id":{"get":{"tags":["Transfer to Bank / Card to Bank"],"summary":"GET instructions :id for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/fiat/payin":{"post":{"tags":["Transfer to Bank / Card to Bank"],"summary":"POST fiat payin for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/fiat/payout":{"post":{"tags":["Transfer to Bank / Card to Bank"],"summary":"POST fiat payout for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/fiat/transfers-to-bank":{"post":{"tags":["Transfer to Bank / Card to Bank"],"summary":"POST fiat transfers-to-bank for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/fiat/transfers-to-bank/:id":{"get":{"tags":["Transfer to Bank / Card to Bank"],"summary":"GET transfers-to-bank :id for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/fiat/transfers-to-bank/quote":{"post":{"tags":["Transfer to Bank / Card to Bank"],"summary":"POST transfers-to-bank quote for Transfer to Bank / Card to Bank","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/onramp/batches/execute":{"post":{"tags":["Transfer to Wallet"],"summary":"POST batches execute for Transfer to Wallet","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/onramp/requests":{"get":{"tags":["Transfer to Wallet"],"summary":"GET onramp requests for Transfer to Wallet","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Transfer to Wallet"],"summary":"POST onramp requests for Transfer to Wallet","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>","source_wallet_id":"<fiat_wallet_id>","amount":"100000","source_fiat_iso":"IDR","destination":{"wallet_address":"0x1111111111111111111111111111111111111111","network":"POLYGON","asset_code":"USDT"}}}}}}},"/api/onramp/requests/:id":{"get":{"tags":["Transfer to Wallet"],"summary":"GET requests :id for Transfer to Wallet","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/users":{"post":{"tags":["Users"],"summary":"POST users for Users","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/verification/clients/:client_id/start":{"post":{"tags":["Verification"],"summary":"POST :client_id start for Verification","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/verification/clients/:client_id/submit":{"post":{"tags":["Verification"],"summary":"POST :client_id submit for Verification","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/verification/me":{"get":{"tags":["Verification"],"summary":"GET verification me for Verification","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/verification/user/start":{"post":{"tags":["Verification"],"summary":"POST user start for Verification","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/verification/user/submit":{"post":{"tags":["Verification"],"summary":"POST user submit for Verification","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/wallets":{"get":{"tags":["Wallet Transfer"],"summary":"GET wallets for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Wallet Transfer"],"summary":"POST wallets for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/wallets/:id":{"get":{"tags":["Wallet Transfer"],"summary":"GET wallets :id for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/wallets/:id/accounts":{"get":{"tags":["Wallet Transfer"],"summary":"GET :id accounts for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Wallet Transfer"],"summary":"POST :id accounts for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/wallets/:id/balances":{"get":{"tags":["Wallet Transfer"],"summary":"GET :id balances for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/wallets/:id/history":{"get":{"tags":["Wallet Transfer"],"summary":"GET :id history for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}},"/api/wallets/:id/make-primary":{"post":{"tags":["Wallet Transfer"],"summary":"POST :id make-primary for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>"}}}}}},"/api/wallets/transfers":{"post":{"tags":["Wallet Transfer"],"summary":"POST wallets transfers for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"client_id":"<workspace_client_id>","source_wallet_id":"<source_wallet_id>","destination_wallet_id":"<destination_wallet_id>","amount":"100000","description":"Internal wallet transfer"}}}}}},"/api/wallets/transfers/:id":{"get":{"tags":["Wallet Transfer"],"summary":"GET transfers :id for Wallet Transfer","description":"Requires a valid Bearer JWT and, for workspace flows, a client/workspace membership.","parameters":[{"name":"x-findigi-is-test","in":"header","required":false,"schema":{"type":"string","enum":["true","false","1","0"]},"example":"true","description":"Header-driven sandbox/testnet context."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"example":{"ok":true}}}},"400":{"description":"Validation or business-rule error","content":{"application/json":{"example":{"error":"VALIDATION_ERROR","message":"Required input is missing or invalid."}}}}},"security":[{"bearerAuth":[]}]}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}