{"components":{"parameters":{"IdempotencyKeyHeader":{"description":"Required for monetary mutations to prevent duplicate execution.","in":"header","name":"Idempotency-Key","required":true,"schema":{"maxLength":128,"type":"string"}},"Limit":{"in":"query","name":"limit","schema":{"default":50,"maximum":500,"minimum":1,"type":"integer"}},"Offset":{"in":"query","name":"offset","schema":{"default":0,"minimum":0,"type":"integer"}},"RequestIdHeader":{"description":"Client-provided correlation id. Echoed in response header.","in":"header","name":"X-Request-Id","required":false,"schema":{"maxLength":120,"type":"string"}}},"responses":{"ErrorResponse":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}},"description":"Unified API error envelope."}},"schemas":{"ErrorEnvelope":{"properties":{"error":{"example":"\u041f\u043e\u0442\u0440\u0456\u0431\u043d\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0456\u044f.","type":"string"},"ok":{"example":false,"type":"boolean"}},"required":["ok","error"],"type":"object"},"LoginRequest":{"properties":{"identity":{"description":"phone or email","type":"string"},"password":{"type":"string"}},"required":["identity","password"],"type":"object"},"PayoutRequest":{"properties":{"amount":{"minimum":0.01,"type":"number"},"payout_type":{"type":"string"},"title":{"type":"string"},"user_id":{"minimum":1,"type":"integer"}},"required":["user_id","amount"],"type":"object"},"PushSubscribeRequest":{"properties":{"auth":{"type":"string"},"endpoint":{"type":"string"},"p256dh":{"type":"string"}},"required":["endpoint","p256dh","auth"],"type":"object"},"RegisterRequest":{"properties":{"email":{"type":"string"},"full_name":{"type":"string"},"password":{"minLength":6,"type":"string"},"phone":{"type":"string"}},"required":["full_name","password"],"type":"object"},"SlaBulkActionRequest":{"properties":{"action":{"type":"string"},"admin_user_id":{"type":"integer"},"ids":{"items":{"type":"integer"},"type":"array"},"note":{"type":"string"},"only_overdue":{"type":"boolean"}},"required":["ids","action"],"type":"object"},"StatementOrderRequest":{"properties":{"from_date":{"format":"date","type":"string"},"report_type":{"enum":["standard","detailed","tax"],"type":"string"},"to_date":{"format":"date","type":"string"}},"type":"object"},"TopupRequest":{"properties":{"amount":{"minimum":0.01,"type":"number"}},"required":["amount"],"type":"object"},"TransferRequest":{"properties":{"amount":{"minimum":0.01,"type":"number"},"description":{"type":"string"},"recipient_account_number":{"type":"string"}},"required":["recipient_account_number","amount"],"type":"object"}},"securitySchemes":{"BearerAuth":{"bearerFormat":"JWT","scheme":"bearer","type":"http"}}},"info":{"description":"Core API for Army Bank web and admin apps. Human docs: /api/docs. Health: /health.","title":"WeeGo Army Bank API","version":"2026-04-08"},"openapi":"3.0.3","paths":{"/api":{"get":{"responses":{"200":{"description":"API metadata and endpoint groups."}},"security":[],"summary":"API catalog entry point","tags":["System"]}},"/api/":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"security":[],"summary":"Auto-discovered GET /api/","tags":["System"]}},"/api/accounts/main":{"get":{"responses":{"200":{"description":"Account payload."}},"summary":"Main account","tags":["Account"]}},"/api/achievements":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/achievements","tags":["Features"]}},"/api/admin/analytics/messenger":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/analytics/messenger","tags":["Admin"]}},"/api/admin/analytics/overview":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/analytics/overview","tags":["Admin"]}},"/api/admin/audit-logs":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/audit-logs","tags":["Admin"]}},"/api/admin/cards":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/cards","tags":["Admin"]}},"/api/admin/cards/stats":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/cards/stats","tags":["Admin"]}},"/api/admin/cards/{card_id}":{"get":{"parameters":[{"in":"path","name":"card_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/cards/{card_id}","tags":["Admin"]}},"/api/admin/cards/{card_id}/block":{"patch":{"parameters":[{"in":"path","name":"card_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/admin/cards/{card_id}/block","tags":["Admin"]}},"/api/admin/cards/{card_id}/close":{"patch":{"parameters":[{"in":"path","name":"card_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/admin/cards/{card_id}/close","tags":["Admin"]}},"/api/admin/cards/{card_id}/unblock":{"patch":{"parameters":[{"in":"path","name":"card_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/admin/cards/{card_id}/unblock","tags":["Admin"]}},"/api/admin/compliance/stats":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/compliance/stats","tags":["Admin"]}},"/api/admin/compliance/users":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/compliance/users","tags":["Admin"]}},"/api/admin/compliance/users/{user_id}":{"get":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/compliance/users/{user_id}","tags":["Admin"]},"patch":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/admin/compliance/users/{user_id}","tags":["Admin"]}},"/api/admin/compliance/users/{user_id}/verify-passport":{"post":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/compliance/users/{user_id}/verify-passport","tags":["Admin"]}},"/api/admin/doc-assignments":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/doc-assignments","tags":["Admin"]}},"/api/admin/doc-templates":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/doc-templates","tags":["Admin"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/doc-templates","tags":["Admin"]}},"/api/admin/doc-templates/{template_id}":{"delete":{"parameters":[{"in":"path","name":"template_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/admin/doc-templates/{template_id}","tags":["Admin"]}},"/api/admin/doc-templates/{template_id}/send":{"post":{"parameters":[{"in":"path","name":"template_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/doc-templates/{template_id}/send","tags":["Admin"]}},"/api/admin/payments/approval-inbox":{"get":{"parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Offset"},{"in":"query","name":"approval_action","schema":{"type":"string"}},{"in":"query","name":"priority","schema":{"type":"string"}},{"in":"query","name":"overdue","schema":{"type":"boolean"}},{"in":"query","name":"search","schema":{"type":"string"}}],"responses":{"200":{"description":"Approval inbox payload."}},"summary":"Approval request inbox","tags":["Processing"]}},"/api/admin/payments/fraud-stats":{"get":{"responses":{"200":{"description":"Fraud stats payload."}},"summary":"Fraud and processing metrics","tags":["Processing"]}},"/api/admin/payments/integrity-check":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/payments/integrity-check","tags":["Admin"]}},"/api/admin/payments/integrity-check/{account_id}":{"get":{"parameters":[{"in":"path","name":"account_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/payments/integrity-check/{account_id}","tags":["Admin"]}},"/api/admin/payments/orders":{"get":{"parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Offset"},{"in":"query","name":"status","schema":{"type":"string"}},{"in":"query","name":"risk_level","schema":{"type":"string"}},{"in":"query","name":"review_state","schema":{"type":"string"}},{"in":"query","name":"approval_state","schema":{"type":"string"}},{"in":"query","name":"assigned_admin_id","schema":{"type":"integer"}},{"in":"query","name":"assigned_mode","schema":{"type":"string"}},{"in":"query","name":"open_only","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Orders payload."}},"summary":"Payment orders registry","tags":["Processing"]}},"/api/admin/payments/orders/{order_id}":{"get":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/payments/orders/{order_id}","tags":["Admin"]}},"/api/admin/payments/orders/{order_id}/approval/finalize":{"post":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/payments/orders/{order_id}/approval/finalize","tags":["Admin"]}},"/api/admin/payments/orders/{order_id}/approval/request":{"post":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/payments/orders/{order_id}/approval/request","tags":["Admin"]}},"/api/admin/payments/orders/{order_id}/assign":{"patch":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/admin/payments/orders/{order_id}/assign","tags":["Admin"]}},"/api/admin/payments/orders/{order_id}/decision":{"patch":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/admin/payments/orders/{order_id}/decision","tags":["Admin"]}},"/api/admin/payments/orders/{order_id}/notes":{"post":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/payments/orders/{order_id}/notes","tags":["Admin"]}},"/api/admin/payments/orders/{order_id}/timeline":{"get":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/payments/orders/{order_id}/timeline","tags":["Admin"]}},"/api/admin/payments/risk-events":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/payments/risk-events","tags":["Admin"]}},"/api/admin/payments/risk-events/{event_id}/resolve":{"post":{"parameters":[{"in":"path","name":"event_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/payments/risk-events/{event_id}/resolve","tags":["Admin"]}},"/api/admin/payments/sla-auto-escalate":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/payments/sla-auto-escalate","tags":["Admin"]}},"/api/admin/payments/sla-bulk-action":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlaBulkActionRequest"}}},"required":true},"responses":{"200":{"description":"Bulk action result."}},"summary":"Bulk actions for selected SLA queue orders","tags":["Processing"]}},"/api/admin/payments/sla-queue":{"get":{"parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Offset"},{"in":"query","name":"overdue","schema":{"type":"boolean"}},{"in":"query","name":"priority","schema":{"type":"string"}},{"in":"query","name":"assigned_admin_id","schema":{"type":"integer"}},{"in":"query","name":"assigned_mode","schema":{"type":"string"}},{"in":"query","name":"risk_level","schema":{"type":"string"}},{"in":"query","name":"approval_state","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"type":"string"}}],"responses":{"200":{"description":"SLA queue payload."}},"summary":"SLA queue with priority ordering","tags":["Processing"]}},"/api/admin/payments/statements":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/payments/statements","tags":["Admin"]}},"/api/admin/payments/workload":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/payments/workload","tags":["Admin"]}},"/api/admin/payouts":{"post":{"parameters":[{"$ref":"#/components/parameters/RequestIdHeader"},{"$ref":"#/components/parameters/IdempotencyKeyHeader"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutRequest"}}},"required":true},"responses":{"200":{"description":"Payout posted."}},"summary":"Create payout for user","tags":["Admin"]}},"/api/admin/stats":{"get":{"responses":{"200":{"description":"Stats payload."},"403":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Admin dashboard stats","tags":["Admin"]}},"/api/admin/stats/charts":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/stats/charts","tags":["Admin"]}},"/api/admin/transactions":{"get":{"parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Offset"},{"in":"query","name":"tx_type","schema":{"type":"string"}},{"in":"query","name":"direction","schema":{"type":"string"}},{"in":"query","name":"search","schema":{"type":"string"}},{"in":"query","name":"high_value_only","schema":{"type":"boolean"}},{"in":"query","name":"high_value_min","schema":{"type":"number"}},{"in":"query","name":"sort_by","schema":{"type":"string"}}],"responses":{"200":{"description":"Transaction registry + summary."}},"summary":"Global transaction registry","tags":["Admin"]}},"/api/admin/users":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/users","tags":["Admin"]}},"/api/admin/users/{user_id}":{"get":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/users/{user_id}","tags":["Admin"]}},"/api/admin/users/{user_id}/account":{"get":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/users/{user_id}/account","tags":["Admin"]}},"/api/admin/users/{user_id}/balance-adjust":{"post":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/users/{user_id}/balance-adjust","tags":["Admin"]}},"/api/admin/users/{user_id}/cards":{"post":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/admin/users/{user_id}/cards","tags":["Admin"]}},"/api/admin/users/{user_id}/role":{"patch":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/admin/users/{user_id}/role","tags":["Admin"]}},"/api/admin/users/{user_id}/transactions":{"get":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/admin/users/{user_id}/transactions","tags":["Admin"]}},"/api/analytics/balance-history":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/analytics/balance-history","tags":["Features"]}},"/api/analytics/insights":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/analytics/insights","tags":["Features"]}},"/api/analytics/summary":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/analytics/summary","tags":["Features"]}},"/api/analytics/top-recipients":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/analytics/top-recipients","tags":["Features"]}},"/api/analytics/velocity":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/analytics/velocity","tags":["Features"]}},"/api/audit-logs":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/audit-logs","tags":["Features"]}},"/api/auth/login":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Authenticated session."},"401":{"$ref":"#/components/responses/ErrorResponse"}},"security":[],"summary":"Login and get bearer token","tags":["Auth"]}},"/api/auth/logout":{"post":{"responses":{"200":{"description":"Session invalidated."}},"summary":"Logout current session","tags":["Auth"]}},"/api/auth/me":{"get":{"responses":{"200":{"description":"Current authenticated user."},"401":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Current user profile","tags":["Auth"]}},"/api/auth/password":{"put":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PUT /api/auth/password","tags":["Auth"]}},"/api/auth/pin":{"delete":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/auth/pin","tags":["Auth"]},"put":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PUT /api/auth/pin","tags":["Auth"]}},"/api/auth/pin/status":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/auth/pin/status","tags":["Auth"]}},"/api/auth/pin/verify":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/auth/pin/verify","tags":["Auth"]}},"/api/auth/register":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Registered and authenticated."},"400":{"$ref":"#/components/responses/ErrorResponse"}},"security":[],"summary":"Register a new user","tags":["Auth"]}},"/api/auth/sessions":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/auth/sessions","tags":["Auth"]}},"/api/auth/sessions/{session_id}":{"delete":{"parameters":[{"in":"path","name":"session_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/auth/sessions/{session_id}","tags":["Auth"]}},"/api/bootstrap":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/bootstrap","tags":["Features"]}},"/api/budget-limits":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/budget-limits","tags":["Features"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/budget-limits","tags":["Features"]}},"/api/budget-limits/{tx_type}":{"delete":{"parameters":[{"in":"path","name":"tx_type","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/budget-limits/{tx_type}","tags":["Features"]}},"/api/cards":{"get":{"responses":{"200":{"description":"Card list."}},"summary":"List user cards","tags":["Cards"]},"post":{"responses":{"200":{"description":"Card issued."}},"summary":"Issue new card","tags":["Cards"]}},"/api/cards/{card_id}/block":{"patch":{"parameters":[{"in":"path","name":"card_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/cards/{card_id}/block","tags":["Cards"]}},"/api/cards/{card_id}/close":{"patch":{"parameters":[{"in":"path","name":"card_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/cards/{card_id}/close","tags":["Cards"]}},"/api/cards/{card_id}/reveal":{"get":{"parameters":[{"in":"path","name":"card_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/cards/{card_id}/reveal","tags":["Cards"]}},"/api/dashboard":{"get":{"responses":{"200":{"description":"Dashboard data."}},"summary":"Client dashboard payload","tags":["Account"]}},"/api/debts":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/debts","tags":["Features"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/debts","tags":["Features"]}},"/api/debts/{debt_id}":{"delete":{"parameters":[{"in":"path","name":"debt_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/debts/{debt_id}","tags":["Features"]}},"/api/debts/{debt_id}/settle":{"post":{"parameters":[{"in":"path","name":"debt_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/debts/{debt_id}/settle","tags":["Features"]}},"/api/docs":{"get":{"responses":{"200":{"description":"HTML docs."}},"security":[],"summary":"Human-readable API documentation page","tags":["System"]}},"/api/donations":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/donations","tags":["Features"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/donations","tags":["Features"]}},"/api/family-contacts":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/family-contacts","tags":["Features"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/family-contacts","tags":["Features"]}},"/api/family-contacts/{contact_id}":{"delete":{"parameters":[{"in":"path","name":"contact_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/family-contacts/{contact_id}","tags":["Features"]}},"/api/marketplace/admin/analytics":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/admin/analytics","tags":["Features"]}},"/api/marketplace/admin/customers":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/admin/customers","tags":["Features"]}},"/api/marketplace/admin/customers/{user_id}":{"get":{"parameters":[{"in":"path","name":"user_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/admin/customers/{user_id}","tags":["Features"]}},"/api/marketplace/admin/export/orders.csv":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/admin/export/orders.csv","tags":["Features"]}},"/api/marketplace/admin/orders":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/admin/orders","tags":["Features"]}},"/api/marketplace/admin/orders/{order_id}":{"get":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/admin/orders/{order_id}","tags":["Features"]}},"/api/marketplace/admin/orders/{order_id}/status":{"patch":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/marketplace/admin/orders/{order_id}/status","tags":["Features"]}},"/api/marketplace/admin/products":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/admin/products","tags":["Features"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/marketplace/admin/products","tags":["Features"]}},"/api/marketplace/admin/products/{product_id}":{"delete":{"parameters":[{"in":"path","name":"product_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/marketplace/admin/products/{product_id}","tags":["Features"]},"patch":{"parameters":[{"in":"path","name":"product_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/marketplace/admin/products/{product_id}","tags":["Features"]}},"/api/marketplace/admin/products/{product_id}/stock":{"patch":{"parameters":[{"in":"path","name":"product_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/marketplace/admin/products/{product_id}/stock","tags":["Features"]}},"/api/marketplace/admin/products/{product_id}/toggle":{"patch":{"parameters":[{"in":"path","name":"product_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/marketplace/admin/products/{product_id}/toggle","tags":["Features"]}},"/api/marketplace/admin/stats":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/admin/stats","tags":["Features"]}},"/api/marketplace/catalog":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/catalog","tags":["Features"]}},"/api/marketplace/checkout":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/marketplace/checkout","tags":["Features"]}},"/api/marketplace/invoice/{invoice_number}":{"get":{"parameters":[{"in":"path","name":"invoice_number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/invoice/{invoice_number}","tags":["Features"]}},"/api/marketplace/invoice/{invoice_number}/pay":{"post":{"parameters":[{"in":"path","name":"invoice_number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/marketplace/invoice/{invoice_number}/pay","tags":["Features"]}},"/api/marketplace/invoices":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/invoices","tags":["Features"]}},"/api/marketplace/order/{order_id}/receipt":{"get":{"parameters":[{"in":"path","name":"order_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/order/{order_id}/receipt","tags":["Features"]}},"/api/marketplace/orders":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/marketplace/orders","tags":["Features"]}},"/api/messenger/assistant/capabilities":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/assistant/capabilities","tags":["Messenger"]}},"/api/messenger/bank/statement/order":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/messenger/bank/statement/order","tags":["Messenger"]}},"/api/messenger/bank/status":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/bank/status","tags":["Messenger"]}},"/api/messenger/bank/summary":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/bank/summary","tags":["Messenger"]}},"/api/messenger/calls":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/messenger/calls","tags":["Messenger"]}},"/api/messenger/calls/config":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/calls/config","tags":["Messenger"]}},"/api/messenger/calls/incoming":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/calls/incoming","tags":["Messenger"]}},"/api/messenger/calls/{call_id}":{"get":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/calls/{call_id}","tags":["Messenger"]}},"/api/messenger/calls/{call_id}/answer":{"put":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PUT /api/messenger/calls/{call_id}/answer","tags":["Messenger"]}},"/api/messenger/calls/{call_id}/end":{"put":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PUT /api/messenger/calls/{call_id}/end","tags":["Messenger"]}},"/api/messenger/calls/{call_id}/ice":{"get":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/calls/{call_id}/ice","tags":["Messenger"]},"post":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/messenger/calls/{call_id}/ice","tags":["Messenger"]}},"/api/messenger/calls/{call_id}/members":{"get":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/calls/{call_id}/members","tags":["Messenger"]}},"/api/messenger/calls/{call_id}/offer":{"put":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PUT /api/messenger/calls/{call_id}/offer","tags":["Messenger"]}},"/api/messenger/calls/{call_id}/reject":{"put":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PUT /api/messenger/calls/{call_id}/reject","tags":["Messenger"]}},"/api/messenger/calls/{call_id}/signals":{"get":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/calls/{call_id}/signals","tags":["Messenger"]},"post":{"parameters":[{"in":"path","name":"call_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/messenger/calls/{call_id}/signals","tags":["Messenger"]}},"/api/messenger/conversations":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/conversations","tags":["Messenger"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/messenger/conversations","tags":["Messenger"]}},"/api/messenger/conversations/{conv_id}/group-name":{"put":{"parameters":[{"in":"path","name":"conv_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PUT /api/messenger/conversations/{conv_id}/group-name","tags":["Messenger"]}},"/api/messenger/conversations/{conv_id}/leave":{"delete":{"parameters":[{"in":"path","name":"conv_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/messenger/conversations/{conv_id}/leave","tags":["Messenger"]}},"/api/messenger/conversations/{conv_id}/members":{"get":{"parameters":[{"in":"path","name":"conv_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/conversations/{conv_id}/members","tags":["Messenger"]},"post":{"parameters":[{"in":"path","name":"conv_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/messenger/conversations/{conv_id}/members","tags":["Messenger"]}},"/api/messenger/conversations/{conv_id}/members/{uid}":{"delete":{"parameters":[{"in":"path","name":"conv_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"uid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/messenger/conversations/{conv_id}/members/{uid}","tags":["Messenger"]}},"/api/messenger/conversations/{conv_id}/messages":{"get":{"parameters":[{"in":"path","name":"conv_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/conversations/{conv_id}/messages","tags":["Messenger"]},"post":{"parameters":[{"in":"path","name":"conv_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/messenger/conversations/{conv_id}/messages","tags":["Messenger"]}},"/api/messenger/conversations/{conv_id}/poll":{"get":{"parameters":[{"in":"path","name":"conv_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/conversations/{conv_id}/poll","tags":["Messenger"]}},"/api/messenger/groups":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/messenger/groups","tags":["Messenger"]}},"/api/messenger/messages/{msg_id}":{"delete":{"parameters":[{"in":"path","name":"msg_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/messenger/messages/{msg_id}","tags":["Messenger"]}},"/api/messenger/presence":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/presence","tags":["Messenger"]}},"/api/messenger/unread":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/unread","tags":["Messenger"]}},"/api/messenger/users/search":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/messenger/users/search","tags":["Messenger"]}},"/api/notifications":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/notifications","tags":["Features"]}},"/api/notifications/read-all":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/notifications/read-all","tags":["Features"]}},"/api/notifications/unread-count":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/notifications/unread-count","tags":["Features"]}},"/api/notifications/{notification_id}/read":{"post":{"parameters":[{"in":"path","name":"notification_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/notifications/{notification_id}/read","tags":["Features"]}},"/api/openapi.json":{"get":{"responses":{"200":{"description":"OpenAPI 3.0 JSON schema."}},"security":[],"summary":"OpenAPI schema","tags":["System"]}},"/api/operator/payouts":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/operator/payouts","tags":["Operator"]}},"/api/operator/users":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/operator/users","tags":["Operator"]}},"/api/payment-templates":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/payment-templates","tags":["Features"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/payment-templates","tags":["Features"]}},"/api/payment-templates/{template_id}":{"delete":{"parameters":[{"in":"path","name":"template_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/payment-templates/{template_id}","tags":["Features"]},"get":{"parameters":[{"in":"path","name":"template_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/payment-templates/{template_id}","tags":["Features"]}},"/api/payouts":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/payouts","tags":["Features"]}},"/api/payouts/demo-accrual":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/payouts/demo-accrual","tags":["Features"]}},"/api/platform/audit-logs":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/platform/audit-logs","tags":["Platform"]}},"/api/platform/overview":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/platform/overview","tags":["Platform"]}},"/api/platform/seed-demo":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/platform/seed-demo","tags":["Platform"]}},"/api/platform/transactions":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/platform/transactions","tags":["Platform"]}},"/api/platform/users":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/platform/users","tags":["Platform"]}},"/api/postman/collection":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"security":[],"summary":"Auto-discovered GET /api/postman/collection","tags":["Features"]}},"/api/postman/environment":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"security":[],"summary":"Auto-discovered GET /api/postman/environment","tags":["Features"]}},"/api/push/status":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/push/status","tags":["Push"]}},"/api/push/subscribe":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushSubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Subscription saved."}},"summary":"Subscribe current user to push notifications","tags":["Push"]}},"/api/push/test":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/push/test","tags":["Push"]}},"/api/push/unsubscribe":{"delete":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"endpoint":{"type":"string"}},"type":"object"}}},"required":false},"responses":{"200":{"description":"Subscription removed."}},"summary":"Remove push subscription by endpoint","tags":["Push"]}},"/api/push/vapid-public-key":{"get":{"responses":{"200":{"description":"VAPID public key."}},"security":[],"summary":"Public VAPID key","tags":["Push"]}},"/api/recurring-transactions":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/recurring-transactions","tags":["Features"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/recurring-transactions","tags":["Features"]}},"/api/recurring-transactions/{recurring_id}":{"delete":{"parameters":[{"in":"path","name":"recurring_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/recurring-transactions/{recurring_id}","tags":["Features"]}},"/api/recurring-transactions/{recurring_id}/toggle":{"patch":{"parameters":[{"in":"path","name":"recurring_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/recurring-transactions/{recurring_id}/toggle","tags":["Features"]}},"/api/savings-goals":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/savings-goals","tags":["Features"]},"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/savings-goals","tags":["Features"]}},"/api/savings-goals/{goal_id}":{"delete":{"parameters":[{"in":"path","name":"goal_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered DELETE /api/savings-goals/{goal_id}","tags":["Features"]}},"/api/savings-goals/{goal_id}/contribute":{"post":{"parameters":[{"in":"path","name":"goal_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/savings-goals/{goal_id}/contribute","tags":["Features"]}},"/api/transactions/export":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/transactions/export","tags":["Account"]}},"/api/transactions/history":{"get":{"parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Offset"},{"in":"query","name":"tx_type","schema":{"type":"string"}},{"in":"query","name":"direction","schema":{"type":"string"}},{"in":"query","name":"from_date","schema":{"format":"date","type":"string"}},{"in":"query","name":"to_date","schema":{"format":"date","type":"string"}}],"responses":{"200":{"description":"Transaction list."}},"summary":"Paginated transaction history","tags":["Account"]}},"/api/transactions/statement":{"get":{"parameters":[{"in":"query","name":"from_date","schema":{"format":"date","type":"string"}},{"in":"query","name":"to_date","schema":{"format":"date","type":"string"}},{"in":"query","name":"report_type","schema":{"enum":["standard","detailed","tax"],"type":"string"}},{"in":"query","name":"order_id","schema":{"type":"string"}}],"responses":{"200":{"description":"PDF document bytes."}},"summary":"Download statement PDF by period/report type","tags":["Account"]}},"/api/transactions/statement/order":{"post":{"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatementOrderRequest"}}},"required":false},"responses":{"200":{"description":"Statement order created."}},"summary":"Create statement order and return download params","tags":["Account"]}},"/api/transactions/statement/orders":{"get":{"parameters":[{"$ref":"#/components/parameters/Limit"}],"responses":{"200":{"description":"Recent statement orders."}},"summary":"List recent statement orders for current user","tags":["Account"]}},"/api/transactions/tags":{"get":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/transactions/tags","tags":["Account"]}},"/api/transactions/topup":{"post":{"parameters":[{"$ref":"#/components/parameters/RequestIdHeader"},{"$ref":"#/components/parameters/IdempotencyKeyHeader"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupRequest"}}},"required":true},"responses":{"200":{"description":"Topup completed."}},"summary":"Top up account","tags":["Account"]}},"/api/transactions/transfer":{"post":{"parameters":[{"$ref":"#/components/parameters/RequestIdHeader"},{"$ref":"#/components/parameters/IdempotencyKeyHeader"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRequest"}}},"required":true},"responses":{"200":{"description":"Transfer completed."}},"summary":"Transfer by account number","tags":["Account"]}},"/api/transactions/transfer-by-card":{"post":{"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered POST /api/transactions/transfer-by-card","tags":["Account"]}},"/api/transactions/with-contact/{account_number}":{"get":{"parameters":[{"in":"path","name":"account_number","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/transactions/with-contact/{account_number}","tags":["Account"]}},"/api/transactions/{transaction_id}":{"get":{"parameters":[{"in":"path","name":"transaction_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/transactions/{transaction_id}","tags":["Account"]}},"/api/transactions/{transaction_id}/note":{"patch":{"parameters":[{"in":"path","name":"transaction_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/transactions/{transaction_id}/note","tags":["Account"]}},"/api/transactions/{transaction_id}/tags":{"patch":{"parameters":[{"in":"path","name":"transaction_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered PATCH /api/transactions/{transaction_id}/tags","tags":["Account"]}},"/api/transactions/{tx_id}/receipt":{"get":{"parameters":[{"in":"path","name":"tx_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Runtime-discovered endpoint."},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"},"403":{"$ref":"#/components/responses/ErrorResponse"},"500":{"$ref":"#/components/responses/ErrorResponse"}},"summary":"Auto-discovered GET /api/transactions/{tx_id}/receipt","tags":["Account"]}},"/api/version":{"get":{"responses":{"200":{"description":"Version payload."}},"security":[],"summary":"API runtime and version metadata","tags":["System"]}}},"security":[{"BearerAuth":[]}],"servers":[{"description":"Current environment base path","url":"/"},{"description":"Render production","url":"https://army-bank.onrender.com"}],"tags":[{"name":"Auth"},{"name":"Account"},{"name":"Cards"},{"name":"Features"},{"name":"Admin"},{"name":"Processing"},{"name":"Push"},{"name":"System"},{"name":"Operator"},{"name":"Platform"},{"name":"Messenger"}]}
