{"openapi":"3.1.0","info":{"title":"Sora Financial Secure Portal (staging)","description":"Staging build of the customer self-service portal (portal-v1). Non-production.","version":"1.4.0-staging"},"paths":{"/api/v1/accounts":{"get":{"tags":["accounts"],"summary":"List accounts (authenticated)","operationId":"list_accounts_api_v1_accounts_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{accountId}":{"get":{"tags":["accounts"],"summary":"Get account details","operationId":"get_account_api_v1_accounts__accountId__get","parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string","examples":["ACC-100001"],"title":"Accountid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{accountId}/statements":{"get":{"tags":["accounts"],"summary":"List account statements","operationId":"account_statements_api_v1_accounts__accountId__statements_get","parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string","examples":["ACC-100001"],"title":"Accountid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/accounts/{accountId}/transactions":{"get":{"tags":["accounts"],"summary":"List account transactions","operationId":"account_transactions_api_v1_accounts__accountId__transactions_get","parameters":[{"name":"accountId","in":"path","required":true,"schema":{"type":"string","examples":["ACC-100001"],"title":"Accountid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cards":{"get":{"tags":["cards"],"summary":"List cards (authenticated)","operationId":"list_cards_api_v1_cards_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cards/{cardId}":{"get":{"tags":["cards"],"summary":"Get card details","operationId":"get_card_api_v1_cards__cardId__get","parameters":[{"name":"cardId","in":"path","required":true,"schema":{"type":"string","examples":["CARD-4001"],"title":"Cardid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/cards/{cardId}/freeze":{"post":{"tags":["cards"],"summary":"Freeze a card (authenticated)","operationId":"freeze_card_api_v1_cards__cardId__freeze_post","parameters":[{"name":"cardId","in":"path","required":true,"schema":{"type":"string","title":"Cardid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/export":{"get":{"tags":["admin"],"summary":"Export all customer records","operationId":"export_customers_api_v1_admin_export_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/config":{"get":{"tags":["admin"],"summary":"Service configuration","operationId":"get_config_api_v1_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/backup/latest":{"get":{"tags":["admin"],"summary":"Latest database backup","operationId":"latest_backup_api_v1_backup_latest_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/password-reset":{"post":{"tags":["admin"],"summary":"Admin password reset (disabled)","operationId":"password_reset_api_v1_admin_password_reset_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/users":{"get":{"tags":["admin"],"summary":"List admin users (authenticated)","operationId":"list_users_api_v1_admin_users_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/payments":{"get":{"tags":["banking"],"summary":"List payments","operationId":"list_payments_api_v1_payments_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["banking"],"summary":"Create a payment","operationId":"create_payment_api_v1_payments_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/transfers":{"get":{"tags":["banking"],"summary":"List transfers","operationId":"list_transfers_api_v1_transfers_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["banking"],"summary":"Create a transfer","operationId":"create_transfer_api_v1_transfers_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/beneficiaries":{"get":{"tags":["banking"],"summary":"List beneficiaries","operationId":"list_beneficiaries_api_v1_beneficiaries_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["banking"],"summary":"Add a beneficiary","operationId":"add_beneficiary_api_v1_beneficiaries_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/statements/{statementId}/download":{"get":{"tags":["banking"],"summary":"Download a statement PDF","operationId":"download_statement_api_v1_statements__statementId__download_get","parameters":[{"name":"statementId","in":"path","required":true,"schema":{"type":"string","title":"Statementid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/documents/tax":{"get":{"tags":["banking"],"summary":"List tax documents","operationId":"tax_documents_api_v1_documents_tax_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/profile":{"get":{"tags":["portal"],"summary":"Get profile","operationId":"get_profile_api_v1_profile_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["portal"],"summary":"Update profile","operationId":"update_profile_api_v1_profile_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notifications":{"get":{"tags":["portal"],"summary":"List notifications","operationId":"notifications_api_v1_notifications_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/support/tickets":{"get":{"tags":["portal"],"summary":"List support tickets","operationId":"support_tickets_api_v1_support_tickets_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/messages":{"get":{"tags":["portal"],"summary":"List secure messages","operationId":"messages_api_v1_messages_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/preferences":{"get":{"tags":["portal"],"summary":"Get preferences","operationId":"preferences_api_v1_preferences_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["portal"],"summary":"Sign in","operationId":"login_api_v1_auth_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/auth/logout":{"post":{"tags":["portal"],"summary":"Sign out","operationId":"logout_api_v1_auth_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/refresh":{"post":{"tags":["portal"],"summary":"Refresh session","operationId":"refresh_api_v1_auth_refresh_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/mfa/verify":{"post":{"tags":["portal"],"summary":"Verify MFA","operationId":"mfa_verify_api_v1_auth_mfa_verify_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/actuator/env":{"get":{"tags":["staging-internal"],"summary":"Spring-style environment dump","operationId":"actuator_env_actuator_env_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/debug/config":{"get":{"tags":["staging-internal"],"summary":"Debug configuration","operationId":"debug_config_debug_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/debug/trace":{"get":{"tags":["staging-internal"],"summary":"Debug trace (raises)","operationId":"debug_trace_debug_trace_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/internal/reports/customers":{"get":{"tags":["staging-internal"],"summary":"Internal customer report","operationId":"internal_report_internal_reports_customers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/internal/customers/{customerId}":{"get":{"tags":["staging-internal"],"summary":"Internal customer lookup","operationId":"internal_customer_internal_customers__customerId__get","parameters":[{"name":"customerId","in":"path","required":true,"schema":{"type":"string","examples":["ACC-100001"],"title":"Customerid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/users":{"get":{"tags":["staging-internal"],"summary":"Internal users (authenticated)","operationId":"internal_users_internal_users_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/exports/generate":{"post":{"tags":["staging-internal"],"summary":"Generate an export (returns download URL)","operationId":"generate_export_internal_exports_generate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/uploads/presign":{"get":{"tags":["staging-internal"],"summary":"Presign an upload URL","operationId":"presign_upload_uploads_presign_get","parameters":[{"name":"filename","in":"query","required":false,"schema":{"type":"string","default":"upload.bin","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/integrations/webhooks/test":{"post":{"tags":["staging-internal"],"summary":"Test a webhook callback","operationId":"webhook_test_integrations_webhooks_test_post","parameters":[{"name":"callback_url","in":"query","required":false,"schema":{"type":"string","default":"https://example.com/callback","title":"Callback Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/integrations/fetch":{"get":{"tags":["staging-internal"],"summary":"Fetch a remote resource","operationId":"integrations_fetch_integrations_fetch_get","parameters":[{"name":"url","in":"query","required":false,"schema":{"type":"string","default":"https://example.com","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/preview":{"get":{"tags":["staging-internal"],"summary":"Preview a target URL","operationId":"preview_preview_get","parameters":[{"name":"target","in":"query","required":false,"schema":{"type":"string","default":"https://example.com","title":"Target"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/jobs/run":{"post":{"tags":["staging-internal"],"summary":"Run an admin job","operationId":"run_job_admin_jobs_run_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/jobs/{jobId}":{"get":{"tags":["staging-internal"],"summary":"Get admin job status","operationId":"job_status_admin_jobs__jobId__get","parameters":[{"name":"jobId","in":"path","required":true,"schema":{"type":"string","examples":["JOB-88213"],"title":"Jobid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/feature-flags":{"get":{"tags":["staging-internal"],"summary":"Feature flags","operationId":"feature_flags_admin_feature_flags_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/deploy":{"post":{"tags":["staging-internal"],"summary":"Trigger deploy (authenticated)","operationId":"admin_deploy_admin_deploy_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}