{"endpoints":[{"description":"Endpoint discovery","method":"GET","path":"/"},{"description":"Liveness probe","method":"GET","path":"/healthz"},{"description":"Readiness probe","method":"GET","path":"/ready"},{"description":"Detailed health check","method":"GET","path":"/health"},{"description":"Register a new user","method":"POST","path":"/api/v1/auth/register"},{"description":"Log in (issues access + refresh cookies)","method":"POST","path":"/api/v1/auth/login"},{"description":"Log out (clears cookies + revokes refresh)","method":"POST","path":"/api/v1/auth/logout"},{"description":"Rotate access + refresh cookies","method":"POST","path":"/api/v1/auth/refresh"},{"description":"Get the authenticated user","method":"GET","path":"/api/v1/auth/me"},{"description":"Resend email confirmation link","method":"POST","path":"/api/v1/account/confirm-resend"},{"description":"Confirm an account from token","method":"POST","path":"/api/v1/account/confirm/{token}"},{"description":"Request a password-reset email","method":"POST","path":"/api/v1/account/reset-password-request"},{"description":"Reset password using a token","method":"POST","path":"/api/v1/account/reset-password/{token}"},{"description":"Request a confirm-email link for a new address","method":"POST","path":"/api/v1/account/change-email-request"},{"description":"Apply a pending email change from token","method":"POST","path":"/api/v1/account/change-email/{token}"},{"description":"Set password and confirm account from an invite token","method":"POST","path":"/api/v1/account/join-from-invite/{token}"},{"description":"Change password while logged in","method":"POST","path":"/api/v1/account/change-password"},{"description":"List your API keys","method":"GET","path":"/api/v1/account/api-keys"},{"description":"Create an API key (secret shown once)","method":"POST","path":"/api/v1/account/api-keys"},{"description":"Revoke an API key","method":"DELETE","path":"/api/v1/account/api-keys/{id}"},{"description":"Admin: list users","method":"GET","path":"/api/v1/admin/users"},{"description":"Admin: create a user","method":"POST","path":"/api/v1/admin/users"},{"description":"Admin: invite a user via email","method":"POST","path":"/api/v1/admin/invite"},{"description":"Admin: user detail","method":"GET","path":"/api/v1/admin/users/{id}"},{"description":"Admin: update user (email, role, name)","method":"PATCH","path":"/api/v1/admin/users/{id}"},{"description":"Admin: delete user","method":"DELETE","path":"/api/v1/admin/users/{id}"},{"description":"Admin: list roles","method":"GET","path":"/api/v1/admin/roles"},{"description":"Admin: create role","method":"POST","path":"/api/v1/admin/roles"},{"description":"Admin: update role (name, permissions, is_default)","method":"PATCH","path":"/api/v1/admin/roles/{id}"},{"description":"Admin: delete role","method":"DELETE","path":"/api/v1/admin/roles/{id}"},{"description":"Admin: list the audit trail (requires audit-read permission)","method":"GET","path":"/api/v1/admin/audit"},{"description":"List jobs","method":"GET","path":"/api/v1/jobs"},{"description":"Submit job","method":"POST","path":"/api/v1/jobs"},{"description":"List dead-letter queue","method":"GET","path":"/api/v1/jobs/dlq"},{"description":"Requeue a DLQ job","method":"POST","path":"/api/v1/jobs/dlq/{id}/requeue"},{"description":"Get job status","method":"GET","path":"/api/v1/jobs/{id}"},{"description":"Cancel job","method":"DELETE","path":"/api/v1/jobs/{id}"},{"description":"List active top-up packages","method":"GET","path":"/api/v1/billing/packages"},{"description":"Get your own wallet balance + ledger history","method":"GET","path":"/api/v1/billing/wallet"},{"description":"Start a PayPal top-up (package or custom amount)","method":"POST","path":"/api/v1/billing/topup"},{"description":"Capture an approved PayPal order and credit your wallet","method":"POST","path":"/api/v1/billing/capture"},{"description":"PayPal webhook: verified capture/refund events (public)","method":"POST","path":"/api/v1/billing/paypal/webhook"},{"description":"Admin: list payments (paged, filter by status/user)","method":"GET","path":"/api/v1/admin/billing/payments"},{"description":"Admin: list every top-up package (active and inactive)","method":"GET","path":"/api/v1/admin/billing/packages"},{"description":"Admin: create a top-up package","method":"POST","path":"/api/v1/admin/billing/packages"},{"description":"Admin: update a top-up package","method":"PATCH","path":"/api/v1/admin/billing/packages/{id}"},{"description":"Admin: delete a top-up package","method":"DELETE","path":"/api/v1/admin/billing/packages/{id}"},{"description":"Admin: read the billing rate/bounds settings","method":"GET","path":"/api/v1/admin/billing/settings"},{"description":"Admin: update the billing rate/bounds settings","method":"PUT","path":"/api/v1/admin/billing/settings"},{"description":"Admin: manually adjust a user's wallet balance","method":"POST","path":"/api/v1/admin/billing/users/{id}/adjust"},{"description":"Admin: billing metrics (revenue, conversion, refunds)","method":"GET","path":"/api/v1/admin/billing/metrics"},{"description":"XiaomiController::listXiaomi","method":"GET","path":"/api/v1/xiaomi/probe"}],"message":"C++ API Template","version":"1.7.0"}