{"openapi":"3.1.0","info":{"title":"AUREM API — ORA Developer Docs","description":"AUREM — Autonomous AI engineer that reads your GitHub repo, writes code, ships commits. Authenticate with Bearer token from /api/aurem-dev/auth/login. Versioning & deprecation policy: https://auremcto.com/policies/api-versioning — deprecated endpoints carry RFC 8594 Deprecation/Sunset headers at least 30 days before removal.","version":"1.0.0"},"paths":{"/api/health":{"get":{"summary":"Health","description":"Liveness + deploy-identity endpoint.\n\nNotable field — `build_hash`:\n  • On dev/preview: the 7-char short SHA of the current git HEAD.\n  • On Emergent prod (no `git` binary + no `.git/` folder): the\n    SHA baked into `backend/.build_info` at commit-time, which is\n    the PARENT of the actual deploy-commit's SHA (Option A\n    workaround has an inherent 1-commit lag — see\n    `_resolve_build_hash` docstring). To reconcile:\n        git log <build_hash>..HEAD    # shows what shipped\n  • If both file-based paths fail: `m<hex>` mtime fallback (bad —\n    indicates the `.build_info` file was excluded from the\n    tarball, an explicit regression signal).","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Health","description":"Liveness + deploy-identity endpoint.\n\nNotable field — `build_hash`:\n  • On dev/preview: the 7-char short SHA of the current git HEAD.\n  • On Emergent prod (no `git` binary + no `.git/` folder): the\n    SHA baked into `backend/.build_info` at commit-time, which is\n    the PARENT of the actual deploy-commit's SHA (Option A\n    workaround has an inherent 1-commit lag — see\n    `_resolve_build_hash` docstring). To reconcile:\n        git log <build_hash>..HEAD    # shows what shipped\n  • If both file-based paths fail: `m<hex>` mtime fallback (bad —\n    indicates the `.build_info` file was excluded from the\n    tarball, an explicit regression signal).","operationId":"health_api_health_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/healthz":{"get":{"summary":"Healthz","operationId":"healthz_api_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aurem-dev/health/ora":{"get":{"summary":"Health Ora","operationId":"health_ora_api_aurem_dev_health_ora_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"}}}}}}},"/ping":{"get":{"summary":"Healthz Root","operationId":"healthz_root_ping_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Healthz Root","operationId":"healthz_root_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/healthz":{"get":{"summary":"Healthz Root","operationId":"healthz_root_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health/ora-breaker":{"get":{"summary":"Health Ora Breaker","description":"Return the ORA circuit-breaker state. Pure local read; no\nupstream call. Public: intended for external monitors.","operationId":"health_ora_breaker_api_health_ora_breaker_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aurem-dev/health/rate-limiter":{"get":{"tags":["Health"],"summary":"Health Rate Limiter","description":"Return the rate-limiter backend state. Zero upstream calls;\njust reads local module state. Intended for post-deploy verify\nand for external monitors that want to catch a silent regression\nto the multi-pod-vulnerable in-memory fallback.","operationId":"health_rate_limiter_api_aurem_dev_health_rate_limiter_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aurem-dev/health/echo-ip":{"get":{"tags":["Health"],"summary":"Health Echo Ip","description":"Echo back the IP the rate-limiter would key on for this request.","operationId":"health_echo_ip_api_aurem_dev_health_echo_ip_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/health":{"get":{"tags":["Health"],"summary":"Health V1","description":"Versioned health check — stable API contract.","operationId":"health_v1_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/_diag/memory":{"get":{"summary":"Diag Memory","operationId":"diag_memory_api__diag_memory_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/aurem-dev/deploy/config":{"get":{"tags":["AUREM Deploy"],"summary":"Get Config","operationId":"get_config_api_aurem_dev_deploy_config_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Config Api Aurem Dev Deploy Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["AUREM Deploy"],"summary":"Save Config","operationId":"save_config_api_aurem_dev_deploy_config_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeployConfigBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Save Config Api Aurem Dev Deploy Config Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["AUREM Deploy"],"summary":"Delete Config","operationId":"delete_config_api_aurem_dev_deploy_config_delete","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Config Api Aurem Dev Deploy Config Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/deploy/config/{project_id}":{"get":{"tags":["AUREM Deploy"],"summary":"Get Config For Project","description":"Iter 212m-9 — hybrid fallback. Returns the project-scoped config\nif one exists, otherwise the user-level default. UI uses the\n`scope` field to badge whether the user is editing the shared\ndefault or a per-project override.","operationId":"get_config_for_project_api_aurem_dev_deploy_config__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Config For Project Api Aurem Dev Deploy Config  Project Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/deploy/run":{"post":{"tags":["AUREM Deploy"],"summary":"Run Deploy","operationId":"run_deploy_api_aurem_dev_deploy_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeployRunBody","default":{"mode":"deploy","sha":"","message_id":"","project_id":"","files":{}}}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Run Deploy Api Aurem Dev Deploy Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/deploy/log/{run_id}":{"get":{"tags":["AUREM Deploy"],"summary":"Get Log","operationId":"get_log_api_aurem_dev_deploy_log__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"since","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Since"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Log Api Aurem Dev Deploy Log  Run Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/deploy/history":{"get":{"tags":["AUREM Deploy"],"summary":"History","operationId":"history_api_aurem_dev_deploy_history_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response History Api Aurem Dev Deploy History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/deploy/runs":{"get":{"tags":["AUREM Deploy"],"summary":"List Runs","description":"Iter 212m-9 — alias for /history with optional `project_id`\nfilter. The Deploy panel uses this to show only the runs that\ntarget the currently-open project.","operationId":"list_runs_api_aurem_dev_deploy_runs_get","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Project Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Runs Api Aurem Dev Deploy Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/deploy/runs/{run_id}/logs":{"get":{"tags":["AUREM Deploy"],"summary":"Runs Logs","description":"Iter 212m-9 — alias for /log/{run_id} matching the\n`/deploy/runs/{run_id}/logs` REST shape the UI prompt requested.","operationId":"runs_logs_api_aurem_dev_deploy_runs__run_id__logs_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"since","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Since"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Runs Logs Api Aurem Dev Deploy Runs  Run Id  Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/deploy/verify-summary":{"get":{"tags":["AUREM Deploy"],"summary":"Verify Summary","description":"V1-dashboard (2026-08-30) — the compact, USER-facing summary of\nthe V1 deploy-verify engine's last 30d for this deploy target: one\npass-rate number, the last failure's one-line \"what happened\" (if\nany), and the current state. Deliberately NOT the full check list\nor raw events — that's `/admin/preview-deploy-monitor`'s job; this\nis the Deploy panel's compact card.","operationId":"verify_summary_api_aurem_dev_deploy_verify_summary_get","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Verify Summary Api Aurem Dev Deploy Verify Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/deploy/runs/{run_id}/receipt":{"get":{"tags":["AUREM Deploy"],"summary":"Get Run Receipt","description":"S3-D4 — stream the post-deploy verification screenshot back.\nSame authenticated-proxy pattern as\n`cto_projects.get_preview_receipt` (never a public/presigned URL).\nReceipt UI polish (2026-08-30) — `variant=fullpage` streams the V1\nengine's full-page shot (`verify_engine.fullpage_receipt_key`)\ninstead of the default viewport shot, so the panel can show both\nside by side.","operationId":"get_run_receipt_api_aurem_dev_deploy_runs__run_id__receipt_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"variant","in":"query","required":false,"schema":{"type":"string","default":"viewport","title":"Variant"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/deploy/event":{"post":{"tags":["AUREM Deploy"],"summary":"Post Deploy Event","description":"S3/S5 — client-fired events that have no natural server-side\nhook (the \"Go live\" last-look modal opening, and the Rollback\nbutton click itself — the RESULT of that click is logged\nserver-side as rollback_succeeded/deploy_failed).","operationId":"post_deploy_event_api_aurem_dev_deploy_event_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeployEventBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Post Deploy Event Api Aurem Dev Deploy Event Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/architect/blueprint/{project_id}":{"get":{"tags":["architect"],"summary":"Get Project Blueprint","description":"Powers the project settings 'What I set up' panel. Ownership-\nscoped the same way every other `/cto/projects/{id}/...` read\nendpoint is — only the project's own owner can read its\nblueprint. Returns `{\"exists\": false}` (not a 404) when the\nArchitect Agent has never run for this project, since that's a\nnormal, expected state (e.g. a project created before this\nfeature, or one whose task was a scoped fix rather than a new\nbuild) rather than an error.","operationId":"get_project_blueprint_api_aurem_dev_architect_blueprint__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Project Blueprint Api Aurem Dev Architect Blueprint  Project Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/vault/audit-log":{"get":{"tags":["AUREM Vault"],"summary":"Audit Log","operationId":"audit_log_api_aurem_dev_vault_audit_log_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Audit Log Api Aurem Dev Vault Audit Log Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/stacks":{"get":{"tags":["AUREM Stacks"],"summary":"List Route","operationId":"list_route_api_aurem_dev_stacks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Route Api Aurem Dev Stacks Get"}}}}}}},"/api/aurem-dev/stacks/{stack_id}":{"get":{"tags":["AUREM Stacks"],"summary":"Get Route","operationId":"get_route_api_aurem_dev_stacks__stack_id__get","parameters":[{"name":"stack_id","in":"path","required":true,"schema":{"type":"string","title":"Stack Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Route Api Aurem Dev Stacks  Stack Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/domain/config":{"get":{"tags":["AUREM Domain"],"summary":"Get Config","operationId":"get_config_api_aurem_dev_domain_config_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Config Api Aurem Dev Domain Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["AUREM Domain"],"summary":"Save Config","operationId":"save_config_api_aurem_dev_domain_config_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainConfigBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Save Config Api Aurem Dev Domain Config Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/domain/verification/{domain}":{"get":{"tags":["AUREM Domain"],"summary":"Verification Status","description":"Returns the latest 60-s probe result for the given domain.","operationId":"verification_status_api_aurem_dev_domain_verification__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Verification Status Api Aurem Dev Domain Verification  Domain  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/status":{"get":{"tags":["AUREM GitHub"],"summary":"Status","operationId":"status_api_aurem_dev_github_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Status Api Aurem Dev Github Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/push":{"post":{"tags":["AUREM GitHub"],"summary":"Push","description":"Push files to a GitHub repo on a branch.\n\nFile source priority: body.files > files extracted from session messages.\nUses GITHUB_TOKEN PAT. Creates/updates each file via the Contents API.","operationId":"push_api_aurem_dev_github_push_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Push Api Aurem Dev Github Push Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/harden/last":{"get":{"tags":["AUREM Hardening"],"summary":"Last Report","description":"Returns the most recent hardening report for this user, or null.","operationId":"last_report_api_aurem_dev_harden_last_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Last Report Api Aurem Dev Harden Last Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/trust/deploy-count":{"get":{"tags":["AUREM Trust"],"summary":"Deploy Count","description":"Aggregates across every deploy-history collection in the DB.","operationId":"deploy_count_api_aurem_dev_trust_deploy_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Deploy Count Api Aurem Dev Trust Deploy Count Get"}}}}}}},"/api/aurem-dev/trust/uptime":{"get":{"tags":["AUREM Trust"],"summary":"Uptime","description":"Returns the rolling 24h uptime % from external_uptime_pings.","operationId":"uptime_api_aurem_dev_trust_uptime_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Uptime Api Aurem Dev Trust Uptime Get"}}}}}}},"/api/aurem-dev/gallery":{"get":{"tags":["AUREM Trust"],"summary":"Gallery","operationId":"gallery_api_aurem_dev_gallery_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Gallery Api Aurem Dev Gallery Get"}}}}}}},"/api/aurem-dev/gallery/opt-in":{"post":{"tags":["AUREM Trust"],"summary":"Gallery Opt In","operationId":"gallery_opt_in_api_aurem_dev_gallery_opt_in_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryToggleBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Gallery Opt In Api Aurem Dev Gallery Opt In Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/gallery/opt-out":{"post":{"tags":["AUREM Trust"],"summary":"Gallery Opt Out","operationId":"gallery_opt_out_api_aurem_dev_gallery_opt_out_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryToggleBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Gallery Opt Out Api Aurem Dev Gallery Opt Out Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat-commits/link":{"post":{"tags":["AUREM Chat Commits"],"summary":"Link Commit","description":"Called by the chat backend whenever a message triggers a code change.","operationId":"link_commit_api_aurem_dev_chat_commits_link_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Link Commit Api Aurem Dev Chat Commits Link Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat-commits/by-message/{message_id}":{"get":{"tags":["AUREM Chat Commits"],"summary":"By Message","operationId":"by_message_api_aurem_dev_chat_commits_by_message__message_id__get","parameters":[{"name":"message_id","in":"path","required":true,"schema":{"type":"string","title":"Message Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response By Message Api Aurem Dev Chat Commits By Message  Message Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat-commits/rollback":{"post":{"tags":["AUREM Chat Commits"],"summary":"Rollback","description":"Mark the rollback as initiated; the deploy router actually runs git revert.","operationId":"rollback_api_aurem_dev_chat_commits_rollback_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__chat_commits__RollbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Rollback Api Aurem Dev Chat Commits Rollback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/referrals/track":{"post":{"tags":["AUREM Engagement"],"summary":"Track Referral Click","description":"Public endpoint — no auth. Called from the landing page when a\nvisitor lands via `?ref=<uid>`. We record the click so the referrer\nsees engagement signal even before the visitor converts.\n\nBody: {\"ref_code\": \"<uid>\", \"path\": \"/\", \"user_agent\": \"…\"} (best-effort).","operationId":"track_referral_click_api_aurem_dev_referrals_track_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Track Referral Click Api Aurem Dev Referrals Track Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/referrals/attribute":{"post":{"tags":["AUREM Engagement"],"summary":"Attribute Signup To Referrer","description":"Called by the signup flow — links a NEW user account to the\nreferrer who sent them. Idempotent: only attributes the first\nreferral and refuses self-referrals.\n\nBody: {\"ref_code\": \"<referrer_uid>\"}","operationId":"attribute_signup_to_referrer_api_aurem_dev_referrals_attribute_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Attribute Signup To Referrer Api Aurem Dev Referrals Attribute Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ads/attribute-click":{"post":{"tags":["AUREM Engagement"],"summary":"Attribute Ad Click","description":"Called once, right after signup/OAuth-login (mirrors\n/referrals/attribute above) — persists the first-touch ad-click-id\n/ UTM data App.jsx captured on landing onto this user's dev_users\nrow. Closes the founder's audit gap: \"ad-tracking not joined to\ninternal funnel\" — the admin funnel drill-down + user-detail page\ncan now show WHICH real signups came from a paid ad vs organic.\n\nIdempotent: refuses to overwrite an already-attributed user\n(first-touch wins, never gets clobbered by a later session).\n\nBody: {\"gclid\"|\"fbclid\"|\"utm_source\"|\"utm_medium\"|\"utm_campaign\"|\n\"landing_path\": \"<value>\"} — any subset, all optional.","operationId":"attribute_ad_click_api_aurem_dev_ads_attribute_click_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Attribute Ad Click Api Aurem Dev Ads Attribute Click Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/referrals/my":{"get":{"tags":["AUREM Engagement"],"summary":"My Referrals","operationId":"my_referrals_api_aurem_dev_referrals_my_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response My Referrals Api Aurem Dev Referrals My Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/streak/me":{"get":{"tags":["AUREM Engagement"],"summary":" Debit Days From Ledger","description":"Normalise ledger `debit_*` entries to a set of UTC YYYY-MM-DD days.","operationId":"_debit_days_from_ledger_api_aurem_dev_streak_me_get","requestBody":{"content":{"application/json":{"schema":{"items":{"type":"object"},"type":"array","title":"Ledger"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{},"type":"array","uniqueItems":true,"title":"Response  Debit Days From Ledger Api Aurem Dev Streak Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/unlock/request":{"post":{"tags":["AUREM Unlock"],"summary":"Request Unlock","operationId":"request_unlock_api_aurem_dev_unlock_request_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnlockRequestBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Request Unlock Api Aurem Dev Unlock Request Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/unlock/mine":{"get":{"tags":["AUREM Unlock"],"summary":"My Requests","operationId":"my_requests_api_aurem_dev_unlock_mine_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response My Requests Api Aurem Dev Unlock Mine Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/robot-guide":{"get":{"tags":["Auth"],"summary":"Robot Guide Public","description":"Public — custom ORA robot welcome messages for /signup + /login.\n\nAdmin edits these via PUT /admin/robot-guide (Iter 212m-187). Empty\nstring means \"use the built-in default\" on the frontend.","operationId":"robot_guide_public_api_aurem_dev_auth_robot_guide_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Robot Guide Public Api Aurem Dev Auth Robot Guide Get"}}}}}}},"/api/aurem-dev/auth/signup":{"post":{"tags":["Auth"],"summary":"Signup","operationId":"signup_api_aurem_dev_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Signup Api Aurem Dev Auth Signup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/login":{"post":{"tags":["Auth"],"summary":"Login","operationId":"login_api_aurem_dev_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Login Api Aurem Dev Auth Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/login/2fa-verify":{"post":{"tags":["Auth"],"summary":"Login 2Fa Verify","description":"Iter 212m-20 — second leg of the admin 2FA login flow. Trades a\n`mfa_pending` token + 6-digit TOTP code (or a backup code) for the\nreal session JWT.\n\nIdempotent on backup codes: a successfully consumed code is removed\nfrom the user's `mfa_backup_codes` array so it can never be reused.","operationId":"login_2fa_verify_api_aurem_dev_auth_login_2fa_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFAVerifyBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Login 2Fa Verify Api Aurem Dev Auth Login 2Fa Verify Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/forgot-password":{"post":{"tags":["Auth"],"summary":"Forgot Password","description":"Always returns the same generic response regardless of whether\nthe email exists — avoids account-enumeration. Rate-limited per IP\nso it can't be used to spam an inbox or probe emails.","operationId":"forgot_password_api_aurem_dev_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Forgot Password Api Aurem Dev Auth Forgot Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/reset-password":{"post":{"tags":["Auth"],"summary":"Reset Password","operationId":"reset_password_api_aurem_dev_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Reset Password Api Aurem Dev Auth Reset Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/magic-login/exchange":{"post":{"tags":["Auth"],"summary":"Magic Login Exchange","description":"Consumes a magic-login token from a stage-nudge email and\nreturns a real session, same shape as /auth/login. `used=True` is\nset the moment a VALID token is consumed — a forwarded/leaked\nlink that's already been used can never authenticate again.","operationId":"magic_login_exchange_api_aurem_dev_auth_magic_login_exchange_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MagicLoginExchangeBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Magic Login Exchange Api Aurem Dev Auth Magic Login Exchange Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/magic-login/refresh":{"post":{"tags":["Auth"],"summary":"Magic Login Refresh","description":"'Get a new one' — only for a token that's genuinely just time-\nexpired, never for one already used (that stays permanently dead,\nsame single-use guarantee as above). Possessing the original\nunguessable 32-byte token is itself proof of inbox access, so this\nmints + immediately consumes a fresh one for the same user/stage\nwithout a second email round-trip.","operationId":"magic_login_refresh_api_aurem_dev_auth_magic_login_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MagicLoginExchangeBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Magic Login Refresh Api Aurem Dev Auth Magic Login Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/change-password":{"post":{"tags":["Auth"],"summary":"Change Password","operationId":"change_password_api_aurem_dev_auth_change_password_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Change Password Api Aurem Dev Auth Change Password Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/update-phone":{"post":{"tags":["Auth"],"summary":"Update Phone","description":"2026-08-25 — Settings → Profile: add/change/clear the OPTIONAL\nphone number after signup (e.g. for OAuth users who had no signup\nform field for it). Never required — an empty/blank value clears\nthe field back to None rather than erroring.","operationId":"update_phone_api_aurem_dev_auth_update_phone_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePhoneBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Update Phone Api Aurem Dev Auth Update Phone Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/me":{"get":{"tags":["Auth"],"summary":"Me","operationId":"me_api_aurem_dev_auth_me_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":{"type":"object","title":"Response Me Api Aurem Dev Auth Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/tokens":{"get":{"tags":["Auth"],"summary":"Get Tokens","description":"Return the current wallet balance for the authenticated user.","operationId":"get_tokens_api_aurem_dev_auth_tokens_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":{"type":"object","title":"Response Get Tokens Api Aurem Dev Auth Tokens Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/me/funnel-stage":{"get":{"tags":["Auth"],"summary":"My Funnel Stage","description":"2026-08-20 — powers the in-app \"ORA Guide\" mascot. Same stage\nwaterfall as the email nudge cron (services/funnel_nudge_cron.py)\nbut live, single-user, and with NO 24h stuck-gate — the mascot\nshould react the instant a user lands on a stage, not a day later.","operationId":"my_funnel_stage_api_aurem_dev_auth_me_funnel_stage_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":{"type":"object","title":"Response My Funnel Stage Api Aurem Dev Auth Me Funnel Stage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/set-track":{"post":{"tags":["Auth"],"summary":"Set Track","description":"Set the caller's track. Called by:\n  1. Signup flow — right after account creation, once per user.\n  2. Settings → \"Switch to Developer Mode\" (or reverse) — any time.\n\nIdempotent — writing the same value twice is a no-op. The updated\nfield surfaces on the next `/auth/me` call so the frontend can\nre-route without a session refresh.","operationId":"set_track_api_aurem_dev_auth_set_track_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetTrackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Set Track Api Aurem Dev Auth Set Track Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/logout":{"post":{"tags":["Auth"],"summary":"Logout","description":"Server-side revocation of the caller's current token.\nAdds this token's jti to `revoked_tokens` with a TTL matching the\ntoken's own `exp`, so every subsequent request that presents the\nsame token is rejected in `current_dev` with 401.\n\nIdempotent — logging out twice with the same token is a no-op.\n\nFailure modes:\n  - Missing / malformed Authorization header → 401 (via current_dev).\n  - Already-expired token → 401 (via current_dev). Nothing to revoke.\n  - DB unavailable → 503, so the caller retries. We do NOT silently\n    clear localStorage and pretend — that would leave the server-side\n    session live while the UI thinks it's out.","operationId":"logout_api_aurem_dev_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":{"type":"object","title":"Response Logout Api Aurem Dev Auth Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/revoke-all-sessions":{"post":{"tags":["Auth"],"summary":"Revoke All Sessions","description":"Admin-only: nuke every active session for a user by setting\ntheir `session_barrier_at = now`. All existing JWTs for that user\n(regardless of jti) start rejecting on the next request.\n\nO(1) write — no need to enumerate active tokens.\n\nUsed by the founder when a specific user's device / credentials\nare suspected compromised. The user must log in again to get a\nfresh token issued after the barrier.\n\nAlso allowed for a user to revoke THEIR OWN sessions (e.g. \"log me\nout of all my devices\" flow) — same endpoint, same body, matching\nuser_id.","operationId":"revoke_all_sessions_api_aurem_dev_auth_revoke_all_sessions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeAllBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Revoke All Sessions Api Aurem Dev Auth Revoke All Sessions Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/delete-me":{"post":{"tags":["Auth"],"summary":"Delete Me","description":"Self-serve account deletion for GDPR / DSAR compliance.\n\nBody: {\"email_confirmation\": \"<user's own email verbatim>\"}\n\n- Requires the caller's JWT (`current_dev`).\n- Refuses if the caller is a founder (403).\n- Refuses if `email_confirmation` doesn't match the caller's\n  registered email exactly (422).\n- On success:\n    1. Cancels active Stripe subscription (immediate).\n    2. Revokes every GitHub App installation the caller owns.\n    3. Purges rows across 15 user-scoped Mongo collections.\n    4. Emits an audit log line.\n    5. Returns 200 with the deletion report.\n  The caller's JWT is now dangling (their `dev_users` row is gone),\n  so the client-side flow logs out immediately after this call.","operationId":"delete_me_api_aurem_dev_auth_delete_me_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteMeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Me Api Aurem Dev Auth Delete Me Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/onboarding-intent":{"post":{"tags":["Auth"],"summary":"Set Onboarding Intent","description":"Onboarding Step 4 · S-A (2026-08-26) — one 2-choice click, asked\nat signup or on the connect screen: \"Do you already have a repo,\nor starting from an idea?\" One click, no form. Idempotent —\noverwrites on repeat calls (the UI should only show the prompt\nonce, but a second call is harmless).","operationId":"set_onboarding_intent_api_aurem_dev_auth_onboarding_intent_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingIntentBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Set Onboarding Intent Api Aurem Dev Auth Onboarding Intent Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/2fa/status":{"get":{"tags":["Admin 2FA"],"summary":"Status","operationId":"status_api_aurem_dev_admin_2fa_status_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":{"type":"object","title":"Response Status Api Aurem Dev Admin 2Fa Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/2fa/enroll-start":{"post":{"tags":["Admin 2FA"],"summary":"Enroll Start","description":"Begin a fresh 2FA enrollment. Returns the secret + QR PNG +\n8 plaintext backup codes (shown ONCE, never returned again).\n\nIdempotent within a session: calling start twice rolls a new\nsecret AND new backup codes; the previous pending secret is\noverwritten so the admin can recover from a closed/refreshed\nenrollment dialog by starting over.","operationId":"enroll_start_api_aurem_dev_admin_2fa_enroll_start_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":{"type":"object","title":"Response Enroll Start Api Aurem Dev Admin 2Fa Enroll Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/2fa/enroll-verify":{"post":{"tags":["Admin 2FA"],"summary":"Enroll Verify","description":"Admin scanned the QR + typed the 6-digit code. On success we\npromote the pending secret to the live one and flip\n`mfa_enabled=True`.","operationId":"enroll_verify_api_aurem_dev_admin_2fa_enroll_verify_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Enroll Verify Api Aurem Dev Admin 2Fa Enroll Verify Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/2fa/disable":{"post":{"tags":["Admin 2FA"],"summary":"Disable","description":"Admin must prove possession of the authenticator (TOTP) OR a\nvalid backup code before 2FA can be lifted.","operationId":"disable_api_aurem_dev_admin_2fa_disable_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CodeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Disable Api Aurem Dev Admin 2Fa Disable Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/opened":{"post":{"tags":["Chat"],"summary":"Chat Opened","description":"2026-08-24 · Guard 22 — funnel event: chat_opened (idempotent,\none-shot). Closes the \"opened chat but sent nothing\" blind spot —\npreviously there was zero signal between repo_selected and\nfirst_chat_sent; a user who opens the composer and leaves was\nindistinguishable from one who never came back at all.","operationId":"chat_opened_api_aurem_dev_chat_opened_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatOpenedBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Opened Api Aurem Dev Chat Opened Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/agents/list":{"get":{"tags":["Chat"],"summary":"List Agents","description":"Iter 38: return the agents this user is allowed to pick from in\nthe chat selector. ORA is shown only to founder accounts.","operationId":"list_agents_api_aurem_dev_chat_agents_list_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":{"type":"object","title":"Response List Agents Api Aurem Dev Chat Agents List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/modes/available":{"get":{"tags":["Chat"],"summary":"Available Modes","description":"Iter 153 — return the review-mode catalog with lock-state for the\ncaller's tier. Drives ModeSelector.jsx in the composer.","operationId":"available_modes_api_aurem_dev_chat_modes_available_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":{"type":"object","title":"Response Available Modes Api Aurem Dev Chat Modes Available Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/classify-intent":{"post":{"tags":["Chat"],"summary":"Classify Intent Endpoint","description":"Lightweight intent classifier — heuristic only.\nReturns: { tier, confidence, method, reasoning, gateway_ms, clarify? }.\nNo Mongo write; the full `/chat/stream` call logs the real one.","operationId":"classify_intent_endpoint_api_aurem_dev_chat_classify_intent_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__chat__misc__IntentClassifyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/turn/shipped":{"post":{"tags":["Chat"],"summary":"Chat Turn Shipped","description":"Record that an assistant turn was shipped so the Ship button\ndoesn't re-appear on refresh/rejoin. Stores `task_id` on the turn doc.\n\nIter 34 — defensive validation: refuse to write past the end of the\nturns array. MongoDB silently creates sparse `turns[N]` entries when\nasked to $set on an out-of-range index, which corrupts the document\nand brings the Ship button back on every refresh. Front-end already\nsends a DB-correct index, but legacy clients / stale tabs might not.","operationId":"chat_turn_shipped_api_aurem_dev_chat_turn_shipped_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TurnShippedBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Turn Shipped Api Aurem Dev Chat Turn Shipped Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/turn/ship-cancelled":{"post":{"tags":["Chat"],"summary":"Chat Turn Ship Cancelled","description":"2026-09-12 — Bug 2 fix (critical-diff cancel bug). Record that\nthe user explicitly rejected a still-pending ```aurem-handoff```\n\"Approve the fix\" affordance on this turn, so it does NOT\nresurface after a page refresh/rejoin.\n\nMirrors `/turn/shipped` above exactly — same out-of-range\ndefensive fallback (marks the latest un-shipped assistant turn\ninstead of corrupting a sparse array index).","operationId":"chat_turn_ship_cancelled_api_aurem_dev_chat_turn_ship_cancelled_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TurnShipCancelledBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Turn Ship Cancelled Api Aurem Dev Chat Turn Ship Cancelled Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/feedback":{"post":{"tags":["Chat"],"summary":"Chat Feedback","description":"Record like/dislike on an assistant turn. Used for future fine-tuning\n+ lets the UI show that feedback was captured.","operationId":"chat_feedback_api_aurem_dev_chat_feedback_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Feedback Api Aurem Dev Chat Feedback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/task-followup":{"post":{"tags":["Chat"],"summary":"Chat Task Followup","description":"Generate a closing assistant message for a completed Mode C task,\npersist it to the chat session, and return it so the frontend can\nappend it inline. Idempotent — second call returns the cached text.","operationId":"chat_task_followup_api_aurem_dev_chat_task_followup_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskFollowupBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Task Followup Api Aurem Dev Chat Task Followup Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/ora/draft-support-email":{"post":{"tags":["Chat"],"summary":"Draft Support Email","description":"Draft a support email AFTER the Advisor's fix didn't resolve\nthe user's issue. The frontend confirms \"did this fix?\" first and\nonly calls this on \"No, contact support\". The reply is a\nstructured email payload the UI renders as a preview card with a\n`Send` button (mailto: handoff).","operationId":"draft_support_email_api_aurem_dev_chat_ora_draft_support_email_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/send":{"post":{"tags":["Chat"],"summary":"Chat Send","description":"Non-streaming chat — returns full response, persists turn.\nIf maxx_mode=True, runs Emergent watchdog review after DeepSeek reply.","operationId":"chat_send_api_aurem_dev_chat_send_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Send Api Aurem Dev Chat Send Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/stream":{"post":{"tags":["Chat"],"summary":"Chat Stream","description":"SSE token-streaming chat. Iter 45: rate-limited to 30 req/min per IP.\nIter 50.1: founders / unlimited accounts bypass the rate-limit.","operationId":"chat_stream_api_aurem_dev_chat_stream_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/history":{"get":{"tags":["Chat"],"summary":"Chat History","description":"Return last 200 turns of a session for the current user.\nIter 330 root-fix — bumped 100 → 200 to align with the write-side\n`$slice: -200` cap (see POST /chat/history). Previously the write\nkept up to 200 turns in Mongo but this read only returned the last\n100, so anything between positions -200 and -100 silently vanished\non every refresh once the user crossed the 100-turn threshold —\nwhich happens after ~7 loop-mode runs at 15 turns/loop. The user\nreported this as 'older chats disappear after refresh'.","operationId":"chat_history_api_aurem_dev_chat_history_get","parameters":[{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat History Api Aurem Dev Chat History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/sessions":{"get":{"tags":["Chat"],"summary":"Chat Sessions List","description":"Return up to 20 most-recent chat sessions for the current user.\nFilter to a specific project_id when provided; pass 'home' to get\nsessions that aren't bound to any project.","operationId":"chat_sessions_list_api_aurem_dev_chat_sessions_get","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Sessions List Api Aurem Dev Chat Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/sessions/{session_id}":{"delete":{"tags":["Chat"],"summary":"Chat Session Delete","description":"Delete a single chat session belonging to the current user.","operationId":"chat_session_delete_api_aurem_dev_chat_sessions__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Session Delete Api Aurem Dev Chat Sessions  Session Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/chat/sessions/{session_id}/messages":{"delete":{"tags":["Chat"],"summary":"Chat Session Clear Messages","description":"Iter 131 — wipe all turns in a session but KEEP the session\nalive (preserves session_id + title + project link). Powers the\n'Clear chat' button in the chat-window toolbar so a user can\nreset a long conversation without losing its sidebar entry.","operationId":"chat_session_clear_messages_api_aurem_dev_chat_sessions__session_id__messages_delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Chat Session Clear Messages Api Aurem Dev Chat Sessions  Session Id  Messages Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/dev-tools/podshell":{"post":{"tags":["DevTools"],"summary":"Podshell","description":"Run a whitelisted read-only shell command on the pod.\n\nFounder-only (require_admin gate).  Two-layer safety:\n  1. `validate_founder_pod_command` runs before execute_bash so\n     chaining / traversal / secret paths bounce with a specific\n     reason string.\n  2. `execute_bash` (services/local_tools.py) still runs its own\n     binary allowlist + 15s wall-clock + 8 KB stdout cap.\n\nThe founder_pod_mode ctx flag is set to True here (same escape\nhatch used by the Home chat path in orchestrator.py) so\nexecute_bash's ora_boundary_violation check is lifted for\ndocumented pod paths (/app, /tmp, /var, /etc, /usr).","operationId":"podshell_api_aurem_dev_dev_tools_podshell_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodShellRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PodShellResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/dev-tools/podshell/info":{"get":{"tags":["DevTools"],"summary":"Podshell Info","description":"Return the current whitelist/denylist state so the founder can\ncheck what /podshell will accept.  Admin-gated for parity with the\n/podshell endpoint itself.","operationId":"podshell_info_api_aurem_dev_dev_tools_podshell_info_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":{"type":"object","title":"Response Podshell Info Api Aurem Dev Dev Tools Podshell Info Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/oauth/connect":{"get":{"tags":["GitHub OAuth"],"summary":"Connect","description":"Kick off OAuth.\n\nThree modes:\n  • **Connect** (default) — used by an already-logged-in user from\n    Settings to attach GitHub to their existing AUREM account. JWT\n    required (Authorization header or `?auth=` query for browser\n    navigation).\n  • **Signup** (`?signup=1`) — true OAuth-first auth from the /signup\n    page. No JWT required. Callback either logs in the matching user\n    or creates a new account from the GitHub identity.\n  • **Login** (`?signup=1&intent=login`) — same OAuth-first auth, but\n    originating from /login. On cancel we send the user back to\n    /login (not /signup) — iter 113 UX fix.\n\n`?force_reauth=1` (Iter 212) — append `prompt=select_account` so\nGitHub re-shows the authorize page and lets the user switch accounts\ninstead of silently returning the cached session. Used by the\n\"Switch GitHub account\" link in the Add-Project modal.\n\n`?fs=<session_id>&fsrc=<source>` (2026-08-01) — funnel telemetry\nhooks so the client `cta_click` event and the server-side\n`oauth_redirect`/`callback_received`/`linked` events all share a\nsession_id. Both params are stored in `oauth_states` and re-read\ninside `/callback` so the whole flow is stitchable.","operationId":"connect_api_aurem_dev_github_oauth_connect_get","parameters":[{"name":"auth","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth"}},{"name":"signup","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signup"}},{"name":"intent","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent"}},{"name":"force_reauth","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Force Reauth"}},{"name":"fs","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fs"}},{"name":"fsrc","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fsrc"}},{"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/aurem-dev/github/oauth/callback":{"get":{"tags":["GitHub OAuth"],"summary":"Callback","description":"GitHub redirects here after the user finishes the consent flow.\n\nTwo non-success paths to handle gracefully (without 422):\n  1. User clicked **Cancel** on GitHub → `?error=access_denied&...`\n     (no `code` present). We redirect to the frontend with a friendly\n     \"github=cancelled\" message instead of FastAPI's stock 422.\n  2. Any other GitHub-side error → same friendly redirect.\nSuccess path: `?code=...&state=...` exchanges the code and continues.","operationId":"callback_api_aurem_dev_github_oauth_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},{"name":"error_description","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Description"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/oauth/status":{"get":{"tags":["GitHub OAuth"],"summary":"Status","operationId":"status_api_aurem_dev_github_oauth_status_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":{"type":"object","title":"Response Status Api Aurem Dev Github Oauth Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/oauth/repos":{"get":{"tags":["GitHub OAuth"],"summary":"Repos","operationId":"repos_api_aurem_dev_github_oauth_repos_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":{"type":"object","title":"Response Repos Api Aurem Dev Github Oauth Repos Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/oauth/disconnect":{"delete":{"tags":["GitHub OAuth"],"summary":"Disconnect","operationId":"disconnect_api_aurem_dev_github_oauth_disconnect_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Disconnect Api Aurem Dev Github Oauth Disconnect Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/google/oauth/start":{"get":{"tags":["Google OAuth"],"summary":"Start","description":"Kick off direct Google sign-in. Identity-only — no user auth\nrequired to hit this (same as GitHub's signup/login branch).","operationId":"start_api_aurem_dev_google_oauth_start_get","parameters":[{"name":"intent","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Intent"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/google/oauth/callback":{"get":{"tags":["Google OAuth"],"summary":"Callback","description":"Google redirects here after consent. Mirrors github_oauth.py's\ncallback: graceful cancel/error redirects (no stock 422), single-use\nstate row with a 5-min TTL, then the exact same dev_users bridging\nlogic as the GitHub signup flow.","operationId":"callback_api_aurem_dev_google_oauth_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/funnel/github/event":{"post":{"tags":["GitHub Funnel"],"summary":"Ingest Event","description":"Anonymous ingestion endpoint. Frontend fires this at each\nclient-side stage (cta_click, repo_selected). No auth required so\nlogged-out users' CTA clicks on /login and /signup are captured.","operationId":"ingest_event_api_aurem_dev_funnel_github_event_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FunnelEvent"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Ingest Event Api Aurem Dev Funnel Github Event Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/funnel/github/stats":{"get":{"tags":["GitHub Funnel"],"summary":"Funnel Stats","description":"Admin-only aggregate: counts per stage + per source in the\nlast `days` window. Also computes conversion% between adjacent\nstages so the drop-off point is one glance away.","operationId":"funnel_stats_api_aurem_dev_funnel_github_stats_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Funnel Stats Api Aurem Dev Funnel Github Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/app/install":{"get":{"tags":["GitHub App"],"summary":"Install Kickoff","description":"Authenticated redirect to GitHub's install page.\n\nMint a single-use state token bound to `current_dev.user_id`,\npersist it in `oauth_states`, and 302 to\n`github.com/apps/<slug>/installations/new?state=<>`.\n\nQuery params:\n  auth  — legacy pass-through for `?auth=<jwt>` navigations (some\n          chrome-less flows can't set Authorization header). Also\n          used by the Phase 4 wizard popup, which can't set the\n          header on a `window.open()` navigation.\n  fs    — optional funnel session_id to stitch client + server events.","operationId":"install_kickoff_api_aurem_dev_github_app_install_get","parameters":[{"name":"auth","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth"}},{"name":"fs","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fs"}},{"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/aurem-dev/github/app/callback":{"get":{"tags":["GitHub App"],"summary":"Install Callback","description":"GitHub's redirect after an install / update / request action.\n\nHandles four `setup_action` values that GitHub sends:\n  • \"install\" / \"update\" → active install; upsert + link + redirect success\n  • \"request\"            → user needs org-admin approval → soft banner\n  • (missing)            → treat as \"install\" (older GitHub responses)","operationId":"install_callback_api_aurem_dev_github_app_callback_get","parameters":[{"name":"installation_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installation Id"}},{"name":"setup_action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Setup Action"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/app/webhook":{"post":{"tags":["GitHub App"],"summary":"Install Webhook","description":"Signature-validated webhook receiver.\n\nContract:\n  * `raw_body = await request.body()` FIRST — signature is computed\n    over exact bytes, not a re-serialised parse.\n  * HMAC verified against configured webhook_secret.\n  * Dedupes on `X-GitHub-Delivery` header via `webhook_deliveries`.\n  * Every event returns 200 on success (GitHub retries on 5xx —\n    we only 5xx on infra failure, never on unknown events).","operationId":"install_webhook_api_aurem_dev_github_app_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aurem-dev/github/app/installed":{"get":{"tags":["GitHub App"],"summary":"Install Bridge","description":"Tiny HTML bridge served after `/callback` completes.\n\nDetects `window.opener` — if the browser is a popup opened by the\nwizard, it posts an `aurem-app-installed` message back to the\nparent and closes itself. Otherwise it meta-refreshes to\n`/dashboard?flow=connect-repo&…` so the user still lands on the\nright screen.\n\nQuery params (all optional):\n  status      — \"success\" | \"pending\" | \"err\"\n  install_id  — populated on success\n  err         — reason on failure","operationId":"install_bridge_api_aurem_dev_github_app_installed_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"err","title":"Status"}},{"name":"install_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Install Id"}},{"name":"err","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Err"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/app/installations":{"get":{"tags":["GitHub App"],"summary":"List My Installations","description":"Return every active installation linked to the current user.\n\nWizard picker in Phase 4 uses this to render the \"which repo?\"\nstep after the install completes.","operationId":"list_my_installations_api_aurem_dev_github_app_installations_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/aurem-dev/github/app/claim":{"post":{"tags":["GitHub App"],"summary":"Claim Installation","operationId":"claim_installation_api_aurem_dev_github_app_claim_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__github_app___ClaimBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github/app/status":{"get":{"tags":["GitHub App"],"summary":"Connect Status","operationId":"connect_status_api_aurem_dev_github_app_status_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/aurem-dev/github/app/installations/health":{"get":{"tags":["GitHub App"],"summary":"Installations Health","operationId":"installations_health_api_aurem_dev_github_app_installations_health_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/aurem-dev/github/app/installations/{installation_id}":{"delete":{"tags":["GitHub App"],"summary":"Disconnect Installation","description":"User-initiated disconnect. Revokes on GitHub, marks local row\ninactive, cascades cto_projects.installation_active=false.\n\nReturns 404 (not 403) on cross-user attempts so installation_id\ncannot be enumerated across accounts.","operationId":"disconnect_installation_api_aurem_dev_github_app_installations__installation_id__delete","parameters":[{"name":"installation_id","in":"path","required":true,"schema":{"type":"integer","title":"Installation Id"}},{"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/aurem-dev/cto/projects/{project_id}/check-pat":{"get":{"tags":["AUREM Projects"],"summary":"Check Project Pat","description":"Iter 153 FIX 3 — PAT health check.\n\nDecrypts the stored token, hits `GET https://api.github.com/user`,\nand reports `valid` / `expired` / `missing` along with the upstream\n`github-authentication-token-expiration` header if GitHub returned\none. Used by Projects.jsx to toast the user if their PAT is gone\nor expiring within 7 days.","operationId":"check_project_pat_api_aurem_dev_cto_projects__project_id__check_pat_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Check Project Pat Api Aurem Dev Cto Projects  Project Id  Check Pat Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/add":{"post":{"tags":["AUREM Projects"],"summary":"Add Project","operationId":"add_project_api_aurem_dev_cto_projects_add_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddProject"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Add Project Api Aurem Dev Cto Projects Add Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/indexing-status":{"get":{"tags":["AUREM Projects"],"summary":"Project Indexing Status","description":"Iter 212m-75 — poll endpoint for FE to track async indexing.\nReturns: {status: \"indexing\"|\"ready\"|\"error\", error, indexed_at}.","operationId":"project_indexing_status_api_aurem_dev_cto_projects__project_id__indexing_status_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Project Indexing Status Api Aurem Dev Cto Projects  Project Id  Indexing Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/verify-pat":{"post":{"tags":["AUREM Projects"],"summary":"Verify Pat","description":"2026-06 PAT-removal — PAT validation is permanently retired.\nKept as an honest 200-shaped rejection (not a confusing 404) for\nany stale UI/API caller.","operationId":"verify_pat_api_aurem_dev_cto_projects_verify_pat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPatBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Verify Pat Api Aurem Dev Cto Projects Verify Pat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/list":{"get":{"tags":["AUREM Projects"],"summary":"List Projects","operationId":"list_projects_api_aurem_dev_cto_projects_list_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Projects Api Aurem Dev Cto Projects List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}":{"delete":{"tags":["AUREM Projects"],"summary":"Remove Project","operationId":"remove_project_api_aurem_dev_cto_projects__project_id__delete","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Remove Project Api Aurem Dev Cto Projects  Project Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["AUREM Projects"],"summary":"Update Project","description":"Update PAT / branch / tech stack of an existing project.","operationId":"update_project_api_aurem_dev_cto_projects__project_id__patch","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProject"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Update Project Api Aurem Dev Cto Projects  Project Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/test-pat":{"get":{"tags":["AUREM Projects"],"summary":"Test Project Pat","description":"Verify the project's stored PAT (or fallback OAuth token) can\nread the connected GitHub repo. Returns a uniform shape so the\nfrontend never has to branch on HTTP status:\n\n  {ok: true,  repo: \"owner/name\", private: bool}\n  {ok: false, error: \"<human-readable reason>\"}\n\nHTTP status is always 200 — error is encoded in `ok`. This keeps\nthe React Query / axios paths simple.","operationId":"test_project_pat_api_aurem_dev_cto_projects__project_id__test_pat_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Test Project Pat Api Aurem Dev Cto Projects  Project Id  Test Pat Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/tree":{"get":{"tags":["AUREM Projects"],"summary":"Get Project Tree","description":"Return the list of source-file paths in the connected GitHub repo\nat the project's pinned branch. Filtered to source files only\n(no node_modules, no binaries, no >200KB blobs).\n\nUsed by PreviewPanel's `</> Code` toggle to let the user browse\nthe live codebase without leaving the chat. Results are capped at\n300 files; truncated=True is returned if the tree was deeper.","operationId":"get_project_tree_api_aurem_dev_cto_projects__project_id__tree_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Project Tree Api Aurem Dev Cto Projects  Project Id  Tree Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/file":{"get":{"tags":["AUREM Projects"],"summary":"Get Project File","description":"Fetch a single file's content from the connected GitHub repo at\nthe project's pinned branch. Capped at 200KB; bigger files return\na truncated marker so the UI shows a clean message instead of OOM.","operationId":"get_project_file_api_aurem_dev_cto_projects__project_id__file_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"path","in":"query","required":true,"schema":{"type":"string","title":"Path"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Project File Api Aurem Dev Cto Projects  Project Id  File Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/detect-live-url":{"get":{"tags":["AUREM Projects"],"summary":"Detect Live Url","description":"S1-P4 — best-effort, deterministic (0-LLM) auto-detect of the\nproject's live-site URL from repo config, checked BEFORE showing\nthe existing manual AddLiveSiteModal. Tries vercel.json,\nnetlify.toml, then package.json's `homepage` — in that order.\nReuses the SAME _pkg.gh_api_fetch_file() call as /file (L17). Never\ninvents a URL: {\"ok\": True, \"url\": \"\"} means \"nothing found,\nfall back to manual entry\", never an error.","operationId":"detect_live_url_api_aurem_dev_cto_projects__project_id__detect_live_url_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Detect Live Url Api Aurem Dev Cto Projects  Project Id  Detect Live Url Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/build-brain":{"post":{"tags":["AUREM Projects"],"summary":"Build Project Brain","description":"Trigger a full Brain V2 scan for `project_id`.\n\nAuto-called on `POST /projects/add`; also exposed manually so admin\nor settings UI can rebuild after a major refactor or branch swap.","operationId":"build_project_brain_api_aurem_dev_cto_projects__project_id__build_brain_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Build Project Brain Api Aurem Dev Cto Projects  Project Id  Build Brain Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/brain":{"get":{"tags":["AUREM Projects"],"summary":"Get Project Brain","description":"Read-only view of the V2 brain — for the Settings page so\nusers can confirm what the agent knows about their repo.","operationId":"get_project_brain_api_aurem_dev_cto_projects__project_id__brain_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Project Brain Api Aurem Dev Cto Projects  Project Id  Brain Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/warm-start":{"post":{"tags":["AUREM Projects"],"summary":"Warm Start Project","description":"Trigger 4 parallel background agents to pre-load project context.\n\nReturns the `job_id` immediately so the frontend can stream progress\nvia the status endpoint while the user types their first prompt.","operationId":"warm_start_project_api_aurem_dev_cto_projects__project_id__warm_start_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Warm Start Project Api Aurem Dev Cto Projects  Project Id  Warm Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/warm-start/{job_id}/status":{"get":{"tags":["AUREM Projects"],"summary":"Warm Start Status","description":"Poll endpoint: returns the warm-start job's progress so the UI\ncan render a percentage bar.","operationId":"warm_start_status_api_aurem_dev_cto_projects_warm_start__job_id__status_get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Warm Start Status Api Aurem Dev Cto Projects Warm Start  Job Id  Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/build-graph":{"post":{"tags":["AUREM Projects"],"summary":"Build Project Graph","description":"Trigger a hybrid (regex + LLM-top-20) graph build in background.\nReturns immediately — frontend polls `/projects/{id}/graph` until\n`status == 'ready'`.","operationId":"build_project_graph_api_aurem_dev_cto_projects__project_id__build_graph_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Build Project Graph Api Aurem Dev Cto Projects  Project Id  Build Graph Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/graph":{"get":{"tags":["AUREM Projects"],"summary":"Get Project Graph","description":"Light read by default (excludes heavy `nodes` field). Pass\n`?full=true` to fetch the full expanded graph for FE detail view.\n\nIter 212m-113 — Per-project gating is enforced by the\n{project_id, user_id} compound key in `get_graph` / `get_graph_full`.\nCross-repo data leak is impossible — a request with another user's\nproject_id returns {status:'not_built'}.","operationId":"get_project_graph_api_aurem_dev_cto_projects__project_id__graph_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"full","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Full"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Project Graph Api Aurem Dev Cto Projects  Project Id  Graph Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/graph/mermaid":{"post":{"tags":["AUREM Projects"],"summary":"Build Project Mermaid","operationId":"build_project_mermaid_api_aurem_dev_cto_projects__project_id__graph_mermaid_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Build Project Mermaid Api Aurem Dev Cto Projects  Project Id  Graph Mermaid Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/graph/tour":{"get":{"tags":["AUREM Projects"],"summary":"Get Graph Tour","description":"Iter 212m-113 — Guided onboarding tour. Returns a\ndependency-ordered walkthrough of the project's most important\nfiles (API → Service → Data → UI). Gated by project_id+user_id\njust like /graph. Zero new LLM cost — reads cached descriptions\nfrom the existing graph doc.","operationId":"get_graph_tour_api_aurem_dev_cto_projects__project_id__graph_tour_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Graph Tour Api Aurem Dev Cto Projects  Project Id  Graph Tour Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/graph/search":{"get":{"tags":["AUREM Projects"],"summary":"Search Graph","description":"Iter 212m-113 — Fuzzy-ish search across paths + descriptions +\nsymbols. Pure server-side scoring (no LLM). Gated by\nproject_id+user_id. Returns top-N matches with a relevance score.","operationId":"search_graph_api_aurem_dev_cto_projects__project_id__graph_search_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Search Graph Api Aurem Dev Cto Projects  Project Id  Graph Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/graph/impact":{"post":{"tags":["AUREM Projects"],"summary":"Graph Impact","description":"Iter 212m-113 — Diff Impact Analysis. Body: {files: [paths]}.\nReturns the transitive set of files that import the given set\n(one hop, capped at 50). Useful right before a Loop Mode ship to\nsurface the blast radius. Gated by project_id+user_id, no LLM.","operationId":"graph_impact_api_aurem_dev_cto_projects__project_id__graph_impact_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Graph Impact Api Aurem Dev Cto Projects  Project Id  Graph Impact Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/preview/session":{"post":{"tags":["AUREM Projects"],"summary":"Log Preview Session","description":"S4 — fire-and-forget ping so the admin monitor tile can show\nlast-24h preview sessions by device. Never blocks/errors the\nPreview panel on a logging failure.","operationId":"log_preview_session_api_aurem_dev_cto_projects__project_id__preview_session_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewSessionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Log Preview Session Api Aurem Dev Cto Projects  Project Id  Preview Session Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/preview/pending-change":{"get":{"tags":["AUREM Projects"],"summary":"Get Pending Change","description":"S1-P3/P5 — deterministic (0-LLM) read of whether this project\nhas a change that hasn't gone live yet, and which routes it\nlikely touches. Three honest states only: `pending` (a task is\nstill running), `shipped_not_deployed` (code is on GitHub but a\nconfigured BYOH host hasn't been redeployed since), `clean`\n(nothing to show — matches the honest \"No pending changes\" copy\nthe Preview panel renders).","operationId":"get_pending_change_api_aurem_dev_cto_projects__project_id__preview_pending_change_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Pending Change Api Aurem Dev Cto Projects  Project Id  Preview Pending Change Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/preview/capture":{"get":{"tags":["AUREM Projects"],"summary":"Capture Preview Route","description":"S1-P3/S3-D4 — capture a fresh screenshot of the project's live\nsite at `route` for the chosen device, store it as a receipt, and\nreturn the R2 key for `/preview/receipt/{key}` to stream back.\nHonest failure: never a fake success — `ok: False` + `reason`.","operationId":"capture_preview_route_api_aurem_dev_cto_projects__project_id__preview_capture_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"route","in":"query","required":false,"schema":{"type":"string","default":"/","title":"Route"}},{"name":"device","in":"query","required":false,"schema":{"type":"string","default":"phone","title":"Device"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Capture Preview Route Api Aurem Dev Cto Projects  Project Id  Preview Capture Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/preview/receipt/{receipt_key}":{"get":{"tags":["AUREM Projects"],"summary":"Get Preview Receipt","description":"Authenticated proxy — stream a stored receipt JPEG back. Never\na public/presigned URL (keeps a customer's live-site screenshots\nbehind the SAME auth as the rest of their project).","operationId":"get_preview_receipt_api_aurem_dev_cto_projects__project_id__preview_receipt__receipt_key__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"receipt_key","in":"path","required":true,"schema":{"type":"string","title":"Receipt Key"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/{project_id}/what-changed":{"get":{"tags":["AUREM Projects"],"summary":"Get What Changed","description":"S2 — deterministic (0-LLM) \"What changed\" default view.\nReuses the SAME latest-task lookup as /preview/pending-change and\nthe SAME GitHub commit-diff shape as the local_tools.get_commit_diff\norchestrator tool (L17), just wired through this router's simpler\nproject-lookup convention (get_project_file's pattern) instead of\nthe chat-only BINContext. Top 5 files with real added/removed\ncounts + a patch snippet; \"N more\" for the rest; never hides a\nserver-side change.","operationId":"get_what_changed_api_aurem_dev_cto_projects__project_id__what_changed_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get What Changed Api Aurem Dev Cto Projects  Project Id  What Changed Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/tasks/{task_id}/rollback":{"post":{"tags":["AUREM Projects"],"summary":"Rollback Task","description":"Revert a previously-pushed AUREM commit on the project's repo.\nUses `git revert --no-edit <sha>` so the rollback is itself a new\ncommit (no force-push, full history preserved). Idempotent: a task\nthat's already been rolled back returns 409.","operationId":"rollback_task_api_aurem_dev_cto_tasks__task_id__rollback_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__cto_projects__rollback__RollbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Rollback Task Api Aurem Dev Cto Tasks  Task Id  Rollback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/tasks/submit":{"post":{"tags":["AUREM Projects"],"summary":"Submit Task","operationId":"submit_task_api_aurem_dev_cto_tasks_submit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Submit Task Api Aurem Dev Cto Tasks Submit Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/tasks/{task_id}":{"get":{"tags":["AUREM Projects"],"summary":"Get Task","operationId":"get_task_api_aurem_dev_cto_tasks__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Task Api Aurem Dev Cto Tasks  Task Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/tasks/{task_id}/scan":{"get":{"tags":["AUREM Projects"],"summary":"Get Task Scan","description":"Iter 167 — return the post-task regex scan for a completed task.\n\nScan is populated by the worker right after `status=done`, so the\nfrontend polls this endpoint for up to ~10s after the task finishes.\nReturns `{ok, status, scan}` where `scan` is null if no issues found.","operationId":"get_task_scan_api_aurem_dev_cto_tasks__task_id__scan_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Task Scan Api Aurem Dev Cto Tasks  Task Id  Scan Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/tasks/{task_id}/retry":{"post":{"tags":["AUREM Projects"],"summary":"Retry Task","description":"Iter 36: re-queue a FAILED task as a brand-new task with the same\npayload. We don't mutate the old row — easier audit + the user can\nsee what error the original hit. Returns the new `task_id`.","operationId":"retry_task_api_aurem_dev_cto_tasks__task_id__retry_post","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Retry Task Api Aurem Dev Cto Tasks  Task Id  Retry Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/tasks/project/{project_id}":{"get":{"tags":["AUREM Projects"],"summary":"Project Tasks","operationId":"project_tasks_api_aurem_dev_cto_tasks_project__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Project Tasks Api Aurem Dev Cto Tasks Project  Project Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/tasks/{task_id}/stream":{"get":{"tags":["AUREM Projects"],"summary":"Task Stream","description":"SSE stream of live worker steps for a single task (Iter 73).\n\nUsed by the chat bubble's <TaskLiveTape> to render a terminal-style\nprogress feed: reading files… → thinking… → committing → done.\n\nCloses on a `done` or `fail` frame, or after 5 min wall-clock.\nSends a keepalive `ping` every 2 s of silence so the EventSource\non slow networks doesn't auto-retry.","operationId":"task_stream_api_aurem_dev_cto_tasks__task_id__stream_get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/automations/webhook/github":{"post":{"tags":["Automations"],"summary":"Github Webhook","description":"GitHub posts push events here.  Each push triggers any matching\nautomations whose `repo_full_name` + `branch_filter` match.","operationId":"github_webhook_api_aurem_dev_automations_webhook_github_post","parameters":[{"name":"X-Hub-Signature-256","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Hub-Signature-256"}},{"name":"X-GitHub-Event","in":"header","required":false,"schema":{"type":"string","default":"push","title":"X-Github-Event"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Github Webhook Api Aurem Dev Automations Webhook Github Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/automations/create":{"post":{"tags":["Automations"],"summary":"Create Automation","operationId":"create_automation_api_aurem_dev_automations_create_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Automation Api Aurem Dev Automations Create Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/automations/list":{"get":{"tags":["Automations"],"summary":"List Automations","operationId":"list_automations_api_aurem_dev_automations_list_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":{"type":"object","title":"Response List Automations Api Aurem Dev Automations List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/automations/{automation_id}/run":{"post":{"tags":["Automations"],"summary":"Run Automation Now","description":"Manually fire an automation against its repo.\n\nUseful for cron-style rules that the user wants to trigger ahead of\nschedule, or for `manual` triggers (the only way they ever run).","operationId":"run_automation_now_api_aurem_dev_automations__automation_id__run_post","parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","title":"Automation Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Run Automation Now Api Aurem Dev Automations  Automation Id  Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/automations/{automation_id}/toggle":{"post":{"tags":["Automations"],"summary":"Toggle Automation","operationId":"toggle_automation_api_aurem_dev_automations__automation_id__toggle_post","parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","title":"Automation Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Toggle Automation Api Aurem Dev Automations  Automation Id  Toggle Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/automations/{automation_id}":{"delete":{"tags":["Automations"],"summary":"Delete Automation","operationId":"delete_automation_api_aurem_dev_automations__automation_id__delete","parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","title":"Automation Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Automation Api Aurem Dev Automations  Automation Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/upload/convert":{"post":{"tags":["Upload / MarkItDown"],"summary":"Upload Convert","description":"Read an uploaded file, convert it to Markdown, and return the\nmarkdown body to the frontend so it can be appended to the chat\nprompt as clean LLM-readable text.","operationId":"upload_convert_api_aurem_dev_upload_convert_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_convert_api_aurem_dev_upload_convert_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Upload Convert Api Aurem Dev Upload Convert Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/migrations/status":{"get":{"tags":["Admin · Migrations"],"summary":"List applied / pending / drift / orphan migrations","operationId":"get_status_api_aurem_dev_admin_migrations_status_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":{"type":"object","title":"Response Get Status Api Aurem Dev Admin Migrations Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/migrations/mark-applied/{version}":{"post":{"tags":["Admin · Migrations"],"summary":"Record a migration as already-applied WITHOUT running .up(). Used to import existing pre-framework state on a live DB.","operationId":"post_mark_applied_api_aurem_dev_admin_migrations_mark_applied__version__post","parameters":[{"name":"version","in":"path","required":true,"schema":{"type":"string","title":"Version"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Post Mark Applied Api Aurem Dev Admin Migrations Mark Applied  Version  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/migrations/verify":{"post":{"tags":["Admin · Migrations"],"summary":"Return list of migrations whose file drifted since apply","operationId":"post_verify_api_aurem_dev_admin_migrations_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":{"type":"object","title":"Response Post Verify Api Aurem Dev Admin Migrations Verify Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/migrations/up":{"post":{"tags":["Admin · Migrations"],"summary":"Apply pending migrations in order. Idempotent — skips ones already applied. Optional `?target=NNN` caps how far it goes.","operationId":"post_up_api_aurem_dev_admin_migrations_up_post","parameters":[{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Post Up Api Aurem Dev Admin Migrations Up Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/migrations/down":{"post":{"tags":["Admin · Migrations"],"summary":"Rollback the most recent migration, OR rollback everything above ?target=NNN. Refused for migrations marked irreversible unless ?force=true.","operationId":"post_down_api_aurem_dev_admin_migrations_down_post","parameters":[{"name":"target","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Post Down Api Aurem Dev Admin Migrations Down Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/backups/status":{"get":{"tags":["Admin · Backups"],"summary":"Recent backup history (successes and failures)","description":"Return the last `limit` backup_history rows, newest first.\n\nAlso returns rolled-up counters:\n  last_success_at, last_failure_at, consecutive_failures\n— the last one is the signal the founder wants for alerting.","operationId":"get_status_api_aurem_dev_admin_backups_status_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Status Api Aurem Dev Admin Backups Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/backups/list":{"get":{"tags":["Admin · Backups"],"summary":"List backup objects currently in R2","description":"List every object under the `mongo/` prefix in the R2 bucket\nwith size + last-modified so the founder can eyeball what's\nactually stored offsite right now.","operationId":"get_list_api_aurem_dev_admin_backups_list_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":{"type":"object","title":"Response Get List Api Aurem Dev Admin Backups List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/backups/run":{"post":{"tags":["Admin · Backups"],"summary":"Trigger a backup NOW (blocks until done)","description":"Run a single backup synchronously. Founder-triggerable so we\nnever have to wait for the 03:00 UTC cron to prove things work.","operationId":"post_run_api_aurem_dev_admin_backups_run_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":{"type":"object","title":"Response Post Run Api Aurem Dev Admin Backups Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/backups/drill-history":{"get":{"tags":["Admin · Backups"],"summary":"Recurring restore-drill history (services/restore_drill_cron.py)","description":"Automated weekly restore drills — same restore+diff proof as\n/test-restore, but run on a schedule with zero manual action.","operationId":"get_drill_history_api_aurem_dev_admin_backups_drill_history_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Drill History Api Aurem Dev Admin Backups Drill History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/backups/drill-now":{"post":{"tags":["Admin · Backups"],"summary":"Run the automated restore drill NOW (blocks until done)","description":"Founder-triggerable so drill status can be proven fresh on\ndemand, same as `POST /run` does for backups.","operationId":"post_drill_now_api_aurem_dev_admin_backups_drill_now_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":{"type":"object","title":"Response Post Drill Now Api Aurem Dev Admin Backups Drill Now Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/backups/test-restore":{"post":{"tags":["Admin · Backups"],"summary":"Download a backup from R2 and restore into a scratch DB. Returns per-collection doc counts as proof the archive is recoverable. Scratch DB is dropped after unless keep=true.","description":"Proof-of-restore endpoint. Returns per-collection doc counts\nfrom BOTH the source DB and the restored scratch DB so the founder\ncan visually confirm they match.","operationId":"post_test_restore_api_aurem_dev_admin_backups_test_restore_post","parameters":[{"name":"key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"R2 object key to restore. If omitted, uses the most-recent successful backup from history.","title":"Key"},"description":"R2 object key to restore. If omitted, uses the most-recent successful backup from history."},{"name":"keep","in":"query","required":false,"schema":{"type":"boolean","description":"Leave the scratch DB in Mongo after restore for inspection.","default":false,"title":"Keep"},"description":"Leave the scratch DB in Mongo after restore for inspection."},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Post Test Restore Api Aurem Dev Admin Backups Test Restore Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/errors/report":{"post":{"tags":["Admin-public"],"summary":"Report Error","description":"Public — no auth. Frontend posts every console.error here.\nWrite-only: dedupes by (message, url), returns only {ok}. No admin\ndata is ever read or returned, so keeping it unauthenticated is\nsafe (abuse throttling is Guard 14 territory, not a data-leak risk).","operationId":"report_error_api_aurem_dev_admin_errors_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorReport"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Report Error Api Aurem Dev Admin Errors Report Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/qa/latest-report":{"get":{"tags":["admin-qa"],"summary":"Get Latest Qa Report","description":"Iter 334 — Auto-QA agent report viewer. Serves the markdown\nwritten by services/qa_matrix.write_report() (locally or by the\nauto-qa-agent CI job committing .emergent/latest-qa-report.md).\nHonest empty-state when the job has never run.","operationId":"get_latest_qa_report_api_aurem_dev_admin_qa_latest_report_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/aurem-dev/admin/qa/counts":{"get":{"tags":["admin-qa"],"summary":"Qa Counts","description":"Iter 351 — lightweight test-count payload (no style/a11y/CI\nharvest) for the Overview strip. Admin/founder only.","operationId":"qa_counts_api_aurem_dev_admin_qa_counts_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/aurem-dev/admin/qa/status":{"get":{"tags":["admin-qa"],"summary":"Qa Status","description":"Aggregate QA snapshot for /admin/qa. Locked to admin/founder.","operationId":"qa_status_api_aurem_dev_admin_qa_status_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/aurem-dev/admin/qa/guard17-breakers":{"get":{"tags":["admin-qa"],"summary":"Guard17 Breakers","description":"Guard 17 — per-dependency circuit-breaker state, trip counts\n(7d, from breaker_events) and recent transitions.","operationId":"guard17_breakers_api_aurem_dev_admin_qa_guard17_breakers_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/aurem-dev/admin/qa/guard18-timeout-audit":{"get":{"tags":["admin-qa"],"summary":"Guard18 Timeout Audit","description":"Guard 18 — universal timeout budget. Runs the static audit\n(scripts/timeout_audit.py) at request time; computed from actual\nsource on disk, never cached/fabricated.","operationId":"guard18_timeout_audit_api_aurem_dev_admin_qa_guard18_timeout_audit_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/aurem-dev/admin/qa/guard21-security-scan":{"get":{"tags":["admin-qa"],"summary":"Guard21 Security Scan","description":"Guard 21 — OWASP/CWE misconfig + supply-chain static scan,\ncomputed live from disk (never cached).","operationId":"guard21_security_scan_api_aurem_dev_admin_qa_guard21_security_scan_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/aurem-dev/admin/qa/guard19-recovery":{"get":{"tags":["admin-qa"],"summary":"Guard19 Recovery","description":"Guard 19 — process auto-recovery status: restarts (7d), last\nboot reason, loop trips, heartbeat age, current window boots.","operationId":"guard19_recovery_api_aurem_dev_admin_qa_guard19_recovery_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/aurem-dev/admin/qa/guard20-incidents":{"get":{"tags":["admin-qa"],"summary":"Guard20 Incidents","description":"Guard 20 — automated postmortem/incident log. Chronological,\nfilterable (all/open/resolved), with open count + MTTR (30d).","operationId":"guard20_incidents_api_aurem_dev_admin_qa_guard20_incidents_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Status"}},{"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/aurem-dev/admin/qa/fabrication-patterns":{"get":{"tags":["admin-qa"],"summary":"Fabrication Patterns","description":"Recurring fabrication incident groups (source+project+route+\nsignature) in the trailing `since_days` days, most-frequent\nfirst.","operationId":"fabrication_patterns_api_aurem_dev_admin_qa_fabrication_patterns_get","parameters":[{"name":"since_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Since Days"}},{"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/aurem-dev/admin/qa/regression-patterns":{"get":{"tags":["admin-qa"],"summary":"Regression Patterns","operationId":"regression_patterns_api_aurem_dev_admin_qa_regression_patterns_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/aurem-dev/admin/qa/guard1-route-sweep":{"get":{"tags":["admin-qa"],"summary":"Guard1 Route Sweep","description":"G1 — Playwright route smoke sweep last-run snapshot.\nResult rows are written by scripts/g1_route_smoke_sweep.py.","operationId":"guard1_route_sweep_api_aurem_dev_admin_qa_guard1_route_sweep_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/aurem-dev/admin/qa/guard3-scope-drift":{"get":{"tags":["admin-qa"],"summary":"Guard3 Scope Drift","description":"G3 — scope-drift hard-block stats.","operationId":"guard3_scope_drift_api_aurem_dev_admin_qa_guard3_scope_drift_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/aurem-dev/admin/qa/guard5-invariants":{"get":{"tags":["admin-qa"],"summary":"Guard5 Invariants","description":"G5 — data-invariant snapshot: live counts of dev_users w/ null\ntier, negative tokens_granted, orphan loop_sessions state.","operationId":"guard5_invariants_api_aurem_dev_admin_qa_guard5_invariants_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/aurem-dev/admin/qa/guard6-dedup-indexes":{"get":{"tags":["admin-qa"],"summary":"Guard6 Dedup Indexes","description":"G6 — DB dedup unique-index report.","operationId":"guard6_dedup_indexes_api_aurem_dev_admin_qa_guard6_dedup_indexes_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/aurem-dev/admin/qa/guard7-payment-recon":{"get":{"tags":["admin-qa"],"summary":"Guard7 Payment Recon","description":"G7 — hourly Stripe vs local payment reconciliation summary.","operationId":"guard7_payment_recon_api_aurem_dev_admin_qa_guard7_payment_recon_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/aurem-dev/admin/qa/guard10-founder-alerts":{"get":{"tags":["admin-qa"],"summary":"Guard10 Founder Alerts","description":"G10 — founder alert email channel status.","operationId":"guard10_founder_alerts_api_aurem_dev_admin_qa_guard10_founder_alerts_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/aurem-dev/admin/qa/guard12-rollback":{"get":{"tags":["admin-qa"],"summary":"Guard12 Rollback Status","description":"G12 — one-click rollback status + candidate list.","operationId":"guard12_rollback_status_api_aurem_dev_admin_qa_guard12_rollback_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/aurem-dev/admin/qa/guard13-cost":{"get":{"tags":["admin-qa"],"summary":"Guard13 Cost","description":"G13 — LLM cost breaker current spend vs caps.","operationId":"guard13_cost_api_aurem_dev_admin_qa_guard13_cost_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/aurem-dev/admin/qa/guard14-signup-abuse":{"get":{"tags":["admin-qa"],"summary":"Guard14 Signup Abuse","description":"G14 — signup + task abuse counts (7d).","operationId":"guard14_signup_abuse_api_aurem_dev_admin_qa_guard14_signup_abuse_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/aurem-dev/admin/qa/guard15-deps":{"get":{"tags":["admin-qa"],"summary":"Guard15 Deps","description":"G15 — dependency vulnerability scan last-run snapshot.","operationId":"guard15_deps_api_aurem_dev_admin_qa_guard15_deps_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/aurem-dev/admin/qa/guard16-auth-hardening":{"get":{"tags":["admin-qa"],"summary":"Guard16 Auth Hardening","description":"G16 — Auth-hardening posture. Feb 2026, closes the \"assumed\n21, actually 15\" scope gap surfaced by the cockpit build.\n\nChecks 3 real invariants:\n  1. JWT_SECRET is set AND is ≥32 chars (rejects default/short\n     values that make JWT forging trivial).\n  2. bcrypt cost factor (rounds) ≥ 12 — industry-safe against\n     offline hash-cracking.\n  3. Brute-force lockout wired: LOGIN_FAIL_LIMIT ∈ [1,10] AND\n     LOGIN_LOCKOUT_MIN ≥ 5.","operationId":"guard16_auth_hardening_api_aurem_dev_admin_qa_guard16_auth_hardening_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/aurem-dev/admin/qa/guard12-rollback/trigger":{"post":{"tags":["admin-qa"],"summary":"Guard12 Trigger Rollback","description":"Founder-gated. Resolves target_sha → loop_outcomes and fires a\nREAL github_api_writer.revert_commit() via loop_rollback (Iter 367\naudit fix — was fake-writing to rollback_trigger with no consumer).","operationId":"guard12_trigger_rollback_api_aurem_dev_admin_qa_guard12_rollback_trigger_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__admin_qa__RollbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/qa/risk-routing/summary":{"get":{"tags":["admin-qa"],"summary":"Risk Routing Summary","description":"Aggregate 30d of risk_scores + current shadow/enforce mode.","operationId":"risk_routing_summary_api_aurem_dev_admin_qa_risk_routing_summary_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/aurem-dev/admin/qa/browser-selftest":{"get":{"tags":["admin-qa"],"summary":"Browser Selftest Recent","description":"Iter 367 · Item E — last N post-ship Playwright smoke runs.","operationId":"browser_selftest_recent_api_aurem_dev_admin_qa_browser_selftest_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"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/aurem-dev/admin/qa/correction-rules/graduate":{"post":{"tags":["admin-qa"],"summary":"Correction Rules Graduate","description":"Iter 367 · Item C — manual trigger for the 14-day auto-graduation\nsweep. Dry-run returns the eligibility list without writing.","operationId":"correction_rules_graduate_api_aurem_dev_admin_qa_correction_rules_graduate_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"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/aurem-dev/admin/qa/vscode-marketplace-status":{"get":{"tags":["admin-qa"],"summary":"Vscode Marketplace Status","description":"Return the true published state of the AUREM VS Code\nextension on the VS Marketplace.\n\nUses a 5-minute in-memory cache so the admin dashboard doesn't\nhammer marketplace.visualstudio.com on every page refresh. On\nMarketplace-side failure (network error, unexpected HTML) we\nreturn `published=False, reason=\"check_failed\"` — the frontend\ntreats that as \"grey/pending\" so a transient upstream blip\ndoesn't lie in the other direction (fake-green).","operationId":"vscode_marketplace_status_api_aurem_dev_admin_qa_vscode_marketplace_status_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/aurem-dev/admin/qa/ci-vs-local-drift":{"get":{"tags":["admin-qa"],"summary":"Ci Vs Local Drift","description":"QA-Hardening Item 2 — cross-reference local pytest counts vs\nthe latest real GitHub Actions quality-gate run so a divergence\n(green locally, red on CI) can't hide for multiple sessions.","operationId":"ci_vs_local_drift_api_aurem_dev_admin_qa_ci_vs_local_drift_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/aurem-dev/admin/status/all":{"get":{"tags":["Admin-health"],"summary":"Status All","description":"Run every registered check_fn in parallel, return the\ncombined status snapshot. Short-TTL cached (default 8s).\n\nFeb 2026 · prod-hang fix — the individual `run_check_safely`\nwrapper already carries an 8s asyncio.wait_for guard, but that\nguard can't cancel a check_fn that blocks the event loop with\nsync I/O (asyncio.wait_for needs a yield point).  Defence-in-\ndepth: wrap the whole aggregator in a 20s outer timeout so a\nmisbehaving check can never leave the client hanging forever,\nAND record per-check wall-time so future regressions surface\nimmediately in the response detail.","operationId":"status_all_api_aurem_dev_admin_status_all_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/aurem-dev/admin/status/{check_id}/ack":{"post":{"tags":["Admin-health"],"summary":"Ack Check","description":"Acknowledge-and-mute a check until an ISO timestamp.\n\nBody/query param `until` (ISO-8601). Pass empty/null to clear\na prior ack. Acked checks still appear in /all but with\n`ack_active: true`; they're excluded from the notification-bell\nbadge and the cockpit \"Needs Attention\" list.","operationId":"ack_check_api_aurem_dev_admin_status__check_id__ack_post","parameters":[{"name":"check_id","in":"path","required":true,"schema":{"type":"string","title":"Check Id"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Until"}},{"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/aurem-dev/admin/status/notifications":{"get":{"tags":["Admin-health"],"summary":"List Notifications","description":"Newest-first list. `unread_count` drives the bell badge.","operationId":"list_notifications_api_aurem_dev_admin_status_notifications_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"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/aurem-dev/admin/status/notifications/mark-read":{"post":{"tags":["Admin-health"],"summary":"Mark Notifications Read","description":"Bell UI 'mark all as read' — clears the badge without deleting\nhistory.","operationId":"mark_notifications_read_api_aurem_dev_admin_status_notifications_mark_read_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/aurem-dev/admin/status/notifications/{notif_id}/mark-read":{"post":{"tags":["Admin-health"],"summary":"Mark One Notification Read","description":"Bell UI per-row 'mark this read' — targets a single notification\nby its stable `notif_id`.  Legacy rows written before Feb 2026 don't\nhave `notif_id`; for those we fall back to matching on the composite\n(check_id, created_at) that the client passes as the `notif_id` string\n(format: `<check_id>|<created_at>`).  Never touches history — read=True\nonly.","operationId":"mark_one_notification_read_api_aurem_dev_admin_status_notifications__notif_id__mark_read_post","parameters":[{"name":"notif_id","in":"path","required":true,"schema":{"type":"string","title":"Notif Id"}},{"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/aurem-dev/maintenance/status":{"get":{"tags":["Maintenance"],"summary":"Maintenance Status","operationId":"maintenance_status_api_aurem_dev_maintenance_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aurem-dev/admin/maintenance":{"get":{"tags":["Admin-maintenance"],"summary":"Get Settings","operationId":"get_settings_api_aurem_dev_admin_maintenance_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/aurem-dev/admin/maintenance/settings":{"post":{"tags":["Admin-maintenance"],"summary":"Update Settings","operationId":"update_settings_api_aurem_dev_admin_maintenance_settings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MaintenanceSettings"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/maintenance/incidents":{"get":{"tags":["Admin-maintenance"],"summary":"Get Incidents","operationId":"get_incidents_api_aurem_dev_admin_maintenance_incidents_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"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/aurem-dev/admin/synthetic-checks/ingest":{"post":{"tags":["Admin-CI-ingest"],"summary":"Ingest Synthetic Check","description":"Body shape mirrors what the scripts used to write directly:\ng1_route_sweep:  {kind, base_url, total, failed, results:[...]}\ng15_dep_scan:    {kind, total_findings, high_critical, findings:[...]}","operationId":"ingest_synthetic_check_api_aurem_dev_admin_synthetic_checks_ingest_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Ingest Synthetic Check Api Aurem Dev Admin Synthetic Checks Ingest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/synthetic-checks/heartbeat":{"get":{"tags":["Admin-CI-ingest"],"summary":"Get Heartbeat","description":"Admin-facing read of the expected-vs-actual ingest heartbeat\n(services/ci_ingest_heartbeat.py) — Pillar 3, 2026-08-24.","operationId":"get_heartbeat_api_aurem_dev_admin_synthetic_checks_heartbeat_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":{"type":"object","title":"Response Get Heartbeat Api Aurem Dev Admin Synthetic Checks Heartbeat Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/observability/breakers":{"get":{"tags":["Admin-observability"],"summary":"All Breakers","description":"Return live breaker snapshot for every known external dep +\nthe last 50 state transitions + 7-day trip counts from Mongo.\n\nFrontend can poll this every 10-30s to render a cockpit card:\n  dep | state | consecutive_fails | trip_count_7d | last_error","operationId":"all_breakers_api_aurem_dev_admin_observability_breakers_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":{"type":"object","title":"Response All Breakers Api Aurem Dev Admin Observability Breakers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/observability/breakers/{dep}":{"get":{"tags":["Admin-observability"],"summary":"One Breaker","description":"Detail view for a single external dep — same snapshot shape as\n`all_breakers` but scoped to one dep, with the transition log\nfiltered to that dep for a per-service audit trail.","operationId":"one_breaker_api_aurem_dev_admin_observability_breakers__dep__get","parameters":[{"name":"dep","in":"path","required":true,"schema":{"type":"string","title":"Dep"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response One Breaker Api Aurem Dev Admin Observability Breakers  Dep  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/payments":{"get":{"tags":["Admin-payments"],"summary":"List Payments","operationId":"list_payments_api_aurem_dev_admin_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"}}}}}}},"/api/aurem-dev/admin/payments/reconcile":{"post":{"tags":["Admin-payments"],"summary":"Reconcile Pending Payments","description":"Iter 352 — founder-only. Pull every non-paid cto_payments row,\nretrieve its Checkout Session from Stripe and sync the REAL status\n(paid / expired / open) + amount into Mongo. Returns a full\nper-row evidence report so the founder can audit the 22 stuck\n'pending' rows: what they were, when created, what Stripe says.","operationId":"reconcile_pending_payments_api_aurem_dev_admin_payments_reconcile_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/aurem-dev/admin/financials":{"get":{"tags":["Admin-payments"],"summary":"Admin Financials","description":"Live financial dashboard payload — pulls real user counts from\n`dev_users`, real payments from `cto_payments`, real Maxx usage,\nblends with editable settings and current USD→CAD FX.","operationId":"admin_financials_api_aurem_dev_admin_financials_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/aurem-dev/admin/financials/settings":{"post":{"tags":["Admin-payments"],"summary":"Admin Financials Save","description":"Persist the founder's editable financial inputs (cash on hand,\ndev salary, manual user overrides for hypotheticals). Founder-only.","operationId":"admin_financials_save_api_aurem_dev_admin_financials_settings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/billing/run-overage-cron":{"post":{"tags":["Admin-payments"],"summary":"Admin Run Overage Cron","operationId":"admin_run_overage_cron_api_aurem_dev_admin_billing_run_overage_cron_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/aurem-dev/admin/stripe-config":{"get":{"tags":["Admin-payments"],"summary":"Admin Get Stripe Config","description":"Return the current Stripe key (masked) + live ping result.","operationId":"admin_get_stripe_config_api_aurem_dev_admin_stripe_config_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":["Admin-payments"],"summary":"Admin Set Stripe Config","description":"Validate a new Stripe key, save it to admin_settings, and\nhot-swap it into the running process. Refuses any key that fails\na live Account.retrieve().","operationId":"admin_set_stripe_config_api_aurem_dev_admin_stripe_config_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/stripe-prices":{"get":{"tags":["Admin-payments"],"summary":"Admin Get Stripe Prices","description":"Return the current stored price IDs + a live Stripe validation\nfor each (masked last-6 char, mode, and recurring status).","operationId":"admin_get_stripe_prices_api_aurem_dev_admin_stripe_prices_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":["Admin-payments"],"summary":"Admin Set Stripe Prices","description":"Validate + persist all 6 Stripe price IDs and hot-swap into the\nruntime cache. Each ID is verified via `Price.retrieve` against the\nlive Stripe key BEFORE anything is written — the endpoint refuses\nto persist partial or invalid mappings.","operationId":"admin_set_stripe_prices_api_aurem_dev_admin_stripe_prices_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StripePricesBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/support":{"get":{"tags":["Admin-support"],"summary":"List Support Tickets","operationId":"list_support_tickets_api_aurem_dev_admin_support_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"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/aurem-dev/admin/support/{ticket_id}/reply":{"post":{"tags":["Admin-support"],"summary":"Admin Reply","operationId":"admin_reply_api_aurem_dev_admin_support__ticket_id__reply_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReply"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/support/{ticket_id}/resolve":{"post":{"tags":["Admin-support"],"summary":"Admin Resolve","operationId":"admin_resolve_api_aurem_dev_admin_support__ticket_id__resolve_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"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/aurem-dev/admin/alerts":{"get":{"tags":["Admin-support"],"summary":"List Alerts","description":"List integration top-up alerts. `status` filter accepts\n`active` (default), `resolved`, `dismissed`, or `all`.","operationId":"list_alerts_api_aurem_dev_admin_alerts_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"active","title":"Status"}},{"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/aurem-dev/admin/alerts/{alert_id}/dismiss":{"post":{"tags":["Admin-support"],"summary":"Dismiss Alert","description":"Manually dismiss an alert — admin acknowledged + actioned. Does\nNOT prevent the same alert from firing again tomorrow if the\nintegration is still in the same state (the dedupe key is per-day).","operationId":"dismiss_alert_api_aurem_dev_admin_alerts__alert_id__dismiss_post","parameters":[{"name":"alert_id","in":"path","required":true,"schema":{"type":"string","title":"Alert Id"}},{"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/aurem-dev/admin/errors":{"get":{"tags":["Admin-support"],"summary":"List Errors","description":"Admin only — list errors sorted by count desc.","operationId":"list_errors_api_aurem_dev_admin_errors_get","parameters":[{"name":"include_resolved","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Resolved"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Errors Api Aurem Dev Admin Errors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/errors/{error_id}/autofix":{"post":{"tags":["Admin-support"],"summary":"Autofix Error","description":"Admin only — kick ORA off to investigate + fix the error.\n\nFires `chat_with_tools` in the background so this endpoint returns\nfast. Status moves `idle → queued → done|failed` on the error doc.","operationId":"autofix_error_api_aurem_dev_admin_errors__error_id__autofix_post","parameters":[{"name":"error_id","in":"path","required":true,"schema":{"type":"string","title":"Error Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Autofix Error Api Aurem Dev Admin Errors  Error Id  Autofix Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/errors/{error_id}/resolve":{"post":{"tags":["Admin-support"],"summary":"Resolve Error","description":"Admin only — mark this error as resolved (hides it from the list).","operationId":"resolve_error_api_aurem_dev_admin_errors__error_id__resolve_post","parameters":[{"name":"error_id","in":"path","required":true,"schema":{"type":"string","title":"Error Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Resolve Error Api Aurem Dev Admin Errors  Error Id  Resolve Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/me":{"get":{"tags":["Admin-users"],"summary":"Admin Me","operationId":"admin_me_api_aurem_dev_admin_me_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/aurem-dev/admin/github-sync":{"get":{"tags":["Admin-users"],"summary":"Github Sync Status","operationId":"github_sync_status_api_aurem_dev_admin_github_sync_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/aurem-dev/admin/users":{"get":{"tags":["Admin-users"],"summary":"List Users","description":"List users with optional search + signup-time window filter.\n\n`window` accepts: `24h`, `7d`, `30d`, `all`. Bucket counts for all\nthree windows are returned in the same payload so the UI can render\nfilter pills without an extra request.","operationId":"list_users_api_aurem_dev_admin_users_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}},{"name":"window","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Window"}},{"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/aurem-dev/admin/users/{user_id}":{"get":{"tags":["Admin-users"],"summary":"Get User","operationId":"get_user_api_aurem_dev_admin_users__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"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"}}}}}},"delete":{"tags":["Admin-users"],"summary":"Admin Delete User","description":"Hard-delete a user and cascade across owned collections.","operationId":"admin_delete_user_api_aurem_dev_admin_users__user_id__delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"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/aurem-dev/admin/users/{user_id}/grant-tokens":{"post":{"tags":["Admin-users"],"summary":"Grant Tokens","description":"Admin manually credits a user with bonus tokens.\n\nBonus tokens are tracked SEPARATELY on `dev_users.tokens_granted` and added\non top of the plan limit (see `services.usage.get_usage`). Every grant is\nappended to `cto_token_grants` for audit.","operationId":"grant_tokens_api_aurem_dev_admin_users__user_id__grant_tokens_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrantTokensBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/users/{user_id}/enable-loop-beta":{"post":{"tags":["Admin-users"],"summary":"Enable Loop Beta","description":"Iter 364 · Phase-2 — admin toggles `loop_beta_enabled` on a\nsingle dev_users doc so a Pro/Team user can pass the tiered gate\nin `routers/loop.py::start_loop`. Founders always bypass the flag.","operationId":"enable_loop_beta_api_aurem_dev_admin_users__user_id__enable_loop_beta_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoopBetaBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/loop-beta/kill-switch":{"post":{"tags":["Admin-users"],"summary":"Toggle Loop Kill Switch","description":"Iter 364 · Phase-3 — flip the DB-backed kill switch. When ON,\nevery user (including founders) sees a 403 on /loop/start until\nit's flipped OFF. Env var LOOP_MODE_KILL_SWITCH=true is an\northogonal override (env wins if set).","operationId":"toggle_loop_kill_switch_api_aurem_dev_admin_loop_beta_kill_switch_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KillSwitchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/loop-beta/status":{"get":{"tags":["Admin-users"],"summary":"Loop Beta Status","description":"Iter 364 · Phase-3 — dashboard snapshot for the admin QA UI.\nIter 212m-182 · Guard 21 — also returns gate-parity telemetry so a\nfuture /loop/start vs /chat/stream drift (the 212m-181 bug class)\nsurfaces here instead of waiting on a founder report.","operationId":"loop_beta_status_api_aurem_dev_admin_loop_beta_status_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/aurem-dev/admin/funnel":{"get":{"tags":["Admin-users"],"summary":"Admin Funnel Dashboard","description":"Iter 365 · Phase 3 — signup / activation / retention funnel.\n\nReturns:\n  signups            : count of users who completed signup in the window\n  first_chat_pct     : % of those who ever sent a chat\n  first_ship_pct     : % who ever shipped a task (REAL activation KPI)\n  time_to_first_ship_median_h : median hours from signup to first ship\n  d7_retention_pct   : % who did anything on day 7+\n  d30_retention_pct  : % who did anything on day 30+\n  event_counts       : total funnel_events row count by type in the window","operationId":"admin_funnel_dashboard_api_aurem_dev_admin_funnel_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"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/aurem-dev/admin/users/{user_id}/suspend":{"post":{"tags":["Admin-users"],"summary":"Toggle Suspend","operationId":"toggle_suspend_api_aurem_dev_admin_users__user_id__suspend_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuspendBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/users/email-offer":{"post":{"tags":["Admin-users"],"summary":"Admin Send User Offer","description":"Send a one-off offer email to a list of users.\n\n  Request body:\n    {\n      \"user_ids\": [\"uid_..\", \"uid_..\"],   # required, max 500\n      \"subject\":  \"Special offer for you\",\n      \"body_html\": \"<p>Hi {{name}}, ...</p>\",   # supports {{name}} and {{email}}\n      \"from\": \"ORA <ora@aurem.live>\",   # optional, falls back to DIGEST_FROM\n      \"reply_to\": \"polarisbuiltinc@gmail.com\",  # optional, falls back to REPLY_TO_EMAIL env or the current support inbox\n    }\n\nReturns: {sent, failed, dry_run, recipients[]}","operationId":"admin_send_user_offer_api_aurem_dev_admin_users_email_offer_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/insights/dora":{"get":{"tags":["Admin-users"],"summary":"Dora Metrics Endpoint","description":"2026-08-24 · Guard 22 — Phase 5.3 blueprint gap (was 1/10, not\nbuilt at all). 4 standard DORA metrics computed purely from\nexisting collections (deploy_events, rollback_attempts,\nincidents) — no new event infra.","operationId":"dora_metrics_endpoint_api_aurem_dev_admin_insights_dora_get","parameters":[{"name":"period_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Period Days"}},{"name":"env","in":"query","required":false,"schema":{"type":"string","default":"production","title":"Env"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Dora Metrics Endpoint Api Aurem Dev Admin Insights Dora Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/insights/slo":{"get":{"tags":["Admin-users"],"summary":"Slo Metrics Endpoint","description":"2026-08-26 — Blueprint Phase 5.3 gap (\"decide SLOs before you\nneed them for a postmortem\"). Two declared SLOs (chat response,\nship completion) with real rolling p50/p95 computed purely from\nexisting collections (health_endpoint_latency, cto_tasks) — no\nnew event infra. See services/slo_metrics.py for target rationale.","operationId":"slo_metrics_endpoint_api_aurem_dev_admin_insights_slo_get","parameters":[{"name":"period_days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Period Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Slo Metrics Endpoint Api Aurem Dev Admin Insights Slo Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/insights/cost-alert":{"get":{"tags":["Admin-users"],"summary":"Cost Revenue Alert Endpoint","description":"2026-08-27 — Live Cost Alert. On-demand version of the same\ncomputation the cron tick runs (services/cost_revenue_alert_cron.py)\nso the admin Overview card always shows fresh numbers, not a cached\ncron snapshot. Also returns the most recent recorded findings\n(email or log-only) for visibility into what already fired.","operationId":"cost_revenue_alert_endpoint_api_aurem_dev_admin_insights_cost_alert_get","parameters":[{"name":"period_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Period Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Cost Revenue Alert Endpoint Api Aurem Dev Admin Insights Cost Alert Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/insights/journey-watch":{"get":{"tags":["Admin-users"],"summary":"Journey Watch Card Endpoint","description":"2026-08-27 · P7 — admin Journey Watch card. Same 7-day stall/\nresolve/hard-break numbers services/journey_watch.py's Quiet Funnel\nDigest email already computes, plus a per-stage breakdown and the\n5 most recent rows — purely reads `health_notifications` /\n`health_check_state`, no new collection.","operationId":"journey_watch_card_endpoint_api_aurem_dev_admin_insights_journey_watch_get","parameters":[{"name":"period_days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Period Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Journey Watch Card Endpoint Api Aurem Dev Admin Insights Journey Watch Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/insights/confidence-checks":{"get":{"tags":["Admin-users"],"summary":"Confidence Checks Endpoint","description":"2026-08-25 — passive audit trail for the `chat.confidence_check`\nlog line (services/response_confidence.py + routers/chat.py). Built\nbecause the founder has no raw backend log access on Preview or\nProduction — this makes every mismatch-check outcome (the cold-\nstart / council-recall safety net) queryable from the admin panel\ninstead of requiring a support ticket each time.","operationId":"confidence_checks_endpoint_api_aurem_dev_admin_insights_confidence_checks_get","parameters":[{"name":"mismatch_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mismatch Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Confidence Checks Endpoint Api Aurem Dev Admin Insights Confidence Checks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/github-app/repair-orphaned-installations":{"post":{"tags":["Admin-users"],"summary":"Repair Orphaned Installations","description":"2026-08-26 — root-cause backfill for the reconnect bug (see\n`routers/cto_projects.py::update_project` + `services/github_app.py\n::verify_installation_for_repo`): the PATCH reconnect path used to\nset `auth_method=\"github_app\"` without ever setting\n`installation_active`, which is the exact flag `PatRequiredCTA.jsx`\ngates the \"not connected\" banner on — a real installation could\nwork while the banner never cleared.\n\nFinds every `cto_projects` row with `auth_method=\"github_app\"`,\na real `installation_id`, and `installation_active` missing/false\n(the orphaned-link pattern) — the fix going forward stops new\nones; this repairs ones that already exist. For each, re-verifies\nlive GitHub access (same helper as a real reconnect) before\nflipping the flag — never blindly trusts the stored ID.\n\n`dry_run=True` (default) only reports what WOULD change — nothing\nis written. Call with `dry_run=false` to actually repair.","operationId":"repair_orphaned_installations_api_aurem_dev_admin_github_app_repair_orphaned_installations_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Repair Orphaned Installations Api Aurem Dev Admin Github App Repair Orphaned Installations Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/insights/activation-funnel":{"get":{"tags":["Admin-users"],"summary":"Activation Funnel","operationId":"activation_funnel_api_aurem_dev_admin_insights_activation_funnel_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/aurem-dev/admin/insights/activation-funnel/stage-users":{"get":{"tags":["Admin-users"],"summary":"Activation Funnel Stage Users","description":"2026-08-20 — clickable drill-down for the Activation Funnel:\nthe real users currently stuck at one specific stage, with email,\nname, when they reached that stage, and how long they've been\nstuck there (longest-stuck first). Not cached (on-demand click,\nnot a hot path).","operationId":"activation_funnel_stage_users_api_aurem_dev_admin_insights_activation_funnel_stage_users_get","parameters":[{"name":"stage","in":"query","required":true,"schema":{"type":"string","title":"Stage"}},{"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/aurem-dev/admin/insights/first-message-sample":{"get":{"tags":["Admin-users"],"summary":"First Message Sample","description":"2026-08-22 — one-off investigation endpoint: for real (non-test)\nusers who HAVE sent at least one chat message, what did their very\nfirst message (across all their sessions) look like? Answers \"do\nusers know what to type, or do they send vague 1-word messages?\"\n\nNot cached (on-demand, low-traffic diagnostic, not a hot path).","operationId":"first_message_sample_api_aurem_dev_admin_insights_first_message_sample_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":15,"title":"Limit"}},{"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/aurem-dev/admin/insights/user-patterns":{"get":{"tags":["Admin-users"],"summary":"User Patterns Insights","operationId":"user_patterns_insights_api_aurem_dev_admin_insights_user_patterns_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/aurem-dev/admin/dev-users/backfill-created-at":{"post":{"tags":["Admin-users"],"summary":"Admin Backfill Dev Users Created At","description":"P0 recovery endpoint (founder-only) — repair legacy `dev_users`\nrows whose `created_at` is either datetime-typed OR missing.\nSame logic as the startup task in `main.py:_backfill_dev_users_created_at`.\n\nReturns:\n    {\n        ok: True,\n        datetime_fixed: int,        # rows converted from date → float\n        missing_filled: int,        # rows where created_at was absent\n        still_pending:   int,       # rows still on legacy shape (should be 0)\n        total_users:     int,\n    }","operationId":"admin_backfill_dev_users_created_at_api_aurem_dev_admin_dev_users_backfill_created_at_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":{"type":"object","title":"Response Admin Backfill Dev Users Created At Api Aurem Dev Admin Dev Users Backfill Created At Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/dev-users/created-at-health":{"get":{"tags":["Admin-users"],"summary":"Admin Dev Users Created At Health","description":"Cheap read-only probe — reports the shape distribution of\n`created_at` across the `dev_users` collection so the founder can\nverify the P0 fix landed cleanly on production.\n\nHealthy shape: `by_type.double + by_type.int/long == total_users`\nand both `datetime_typed` + `missing_field` are zero.","operationId":"admin_dev_users_created_at_health_api_aurem_dev_admin_dev_users_created_at_health_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":{"type":"object","title":"Response Admin Dev Users Created At Health Api Aurem Dev Admin Dev Users Created At Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/users/{user_id}/chat-sessions":{"get":{"tags":["Admin-users"],"summary":"Admin List Chat Sessions","description":"2026-08-25 — read-only admin lookup so a founder can find the\nright `session_id` to inspect for a support/incident investigation\n(e.g. tracing a reported mismatched-answer bug), without needing\ndirect DB access. Returns newest-first, capped at 50.","operationId":"admin_list_chat_sessions_api_aurem_dev_admin_users__user_id__chat_sessions_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Admin List Chat Sessions Api Aurem Dev Admin Users  User Id  Chat Sessions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/chat-sessions/{session_id}":{"get":{"tags":["Admin-users"],"summary":"Admin Get Chat Session","description":"2026-08-25 — read-only admin lookup of a single session's full\n`turns` array. Founder-only (same guard as every other /admin/*\nroute). Used for incident investigation, e.g. confirming/denying a\nreported \"ORA answered an unrelated question\" mismatch by\ninspecting the actual turn history and timestamps.","operationId":"admin_get_chat_session_api_aurem_dev_admin_chat_sessions__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Admin Get Chat Session Api Aurem Dev Admin Chat Sessions  Session Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/projects":{"get":{"tags":["Admin-projects-brain"],"summary":"List All Projects","operationId":"list_all_projects_api_aurem_dev_admin_projects_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/aurem-dev/admin/tasks":{"get":{"tags":["Admin-projects-brain"],"summary":"List All Tasks","operationId":"list_all_tasks_api_aurem_dev_admin_tasks_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","default":"","title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"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/aurem-dev/admin/architecture":{"get":{"tags":["Admin-projects-brain"],"summary":"Get Architecture","operationId":"get_architecture_api_aurem_dev_admin_architecture_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/aurem-dev/admin/project-brain/{project_id}":{"get":{"tags":["Admin-projects-brain"],"summary":"Admin Project Brain","operationId":"admin_project_brain_api_aurem_dev_admin_project_brain__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"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/aurem-dev/admin/project-brain/{project_id}/trigger-audit":{"get":{"tags":["Admin-projects-brain"],"summary":"Admin Project Brain Trigger Audit","description":"2026-02 — founder Gap-2 follow-up: 'show the actual count, out\nof N real interactions, how many matched vs didn't, and why.'\nRead-only, no writes. Re-runs the EXACT same pure detection logic\n`update_brain_from_conversation` uses (via\n`services.project_brain.detect_brain_triggers` — one shared\nfunction, no risk of this audit drifting out of sync with what\nactually writes) against every real logged conversational turn\nfor this project in `ora_council_logs`, without touching\n`project_brains`. Answers \"was this project's real conversation\nhistory too narrow to ever trigger a write\" with real numbers\ninstead of a guess.","operationId":"admin_project_brain_trigger_audit_api_aurem_dev_admin_project_brain__project_id__trigger_audit_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":2000,"title":"Limit"}},{"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/aurem-dev/admin/project-brain/{project_id}/decision":{"post":{"tags":["Admin-projects-brain"],"summary":"Admin Brain Add Decision","operationId":"admin_brain_add_decision_api_aurem_dev_admin_project_brain__project_id__decision_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrainDecisionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin-projects-brain"],"summary":"Admin Brain Delete Decision","operationId":"admin_brain_delete_decision_api_aurem_dev_admin_project_brain__project_id__decision_delete","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"title","in":"query","required":true,"schema":{"type":"string","title":"Title"}},{"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/aurem-dev/admin/project-brain/{project_id}/preference":{"post":{"tags":["Admin-projects-brain"],"summary":"Admin Brain Add Preference","operationId":"admin_brain_add_preference_api_aurem_dev_admin_project_brain__project_id__preference_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrainPreferenceBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin-projects-brain"],"summary":"Admin Brain Delete Preference","operationId":"admin_brain_delete_preference_api_aurem_dev_admin_project_brain__project_id__preference_delete","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"preference","in":"query","required":true,"schema":{"type":"string","title":"Preference"}},{"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/aurem-dev/admin/brain/{project_id}/dump":{"get":{"tags":["Admin-projects-brain"],"summary":"Admin Brain Dump","description":"Returns exactly what ORA sees for this project.\n\nUsed when \"ORA gave wrong answer\" — founder can compare the user's\nquestion against the literal context block that was injected into\nthe system prompt. Includes raw brain document for decision/pref\ninline deletion + the assembled string for diff debugging.","operationId":"admin_brain_dump_api_aurem_dev_admin_brain__project_id__dump_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/code-surface":{"get":{"tags":["Admin-projects-brain"],"summary":"Code Surface","description":"Walk load-bearing source dirs and return live counts.\n\nDrift-proof replacement for the hand-maintained CODE_SURFACE constant\non the Architecture page — the frontend reads from here so a new\nfile in routers/ or pages/ shows up immediately.","operationId":"code_surface_api_aurem_dev_admin_code_surface_get","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/architecture-health":{"get":{"tags":["Admin-projects-brain"],"summary":"Architecture Health","description":"Run the architecture health report.\n\nQuery params:\n    summary=true → return a short text body instead of full JSON\n                   (useful for one-line Admin tab headlines).","operationId":"architecture_health_api_aurem_dev_admin_architecture_health_get","parameters":[{"name":"summary","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Summary"}},{"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/aurem-dev/admin/duplication":{"get":{"tags":["Admin-projects-brain"],"summary":"Code Duplication","description":"Code-duplication scan (jscpd) — see services/duplication_scanner.py.\n\n2026-08-26 — Phase 3a follow-up. Fast enough (~1-2s) to run live on\nevery call, same posture as /architecture-health above.","operationId":"code_duplication_api_aurem_dev_admin_duplication_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/aurem-dev/admin/churn-risk":{"get":{"tags":["Admin-projects-brain"],"summary":"Churn Risk","description":"Git-churn × complexity/bloat risk ranking.\n\n2026-08-26 — Phase 3a follow-up. Reuses the same architecture_health\nscan already run for /architecture-health so this costs one extra\n`git log` parse, not a second full-codebase scan.","operationId":"churn_risk_api_aurem_dev_admin_churn_risk_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":90,"title":"Days"}},{"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/aurem-dev/admin/brain/{project_id}/recent-commits":{"get":{"tags":["Admin-projects-brain"],"summary":"Brain Recent Commits","description":"Return the last N (default 12) commit events from a project brain.\n\nEach row carries the SHA, one-line description, files touched, and\na UTC timestamp. The BrainDump page renders these as a list with\n\"Show diff →\" buttons that dispatch `ora:prefill` so the user lands\nin chat with `get_commit_diff(<sha>)` pre-filled.","operationId":"brain_recent_commits_api_aurem_dev_admin_brain__project_id__recent_commits_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/brain/{project_id}/replay":{"post":{"tags":["Admin-projects-brain"],"summary":"Admin Brain Replay","description":"Read-only ORA tester. Given a project's assembled brain context,\nanswer a question without writing to MongoDB, without invoking\nVanguard/Mode-D, and without firing any commit. Used to debug\n'ORA gave a wrong answer' cases — founder can iterate on the\nquestion text and see how ORA's response changes.","operationId":"admin_brain_replay_api_aurem_dev_admin_brain__project_id__replay_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/postscan-issues":{"get":{"tags":["Admin-projects-brain"],"summary":"Admin Postscan Issues","description":"Recent post-task scanner findings (vanguard regex + lint).","operationId":"admin_postscan_issues_api_aurem_dev_admin_postscan_issues_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"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/aurem-dev/admin/settings":{"get":{"tags":["Admin-ops-config"],"summary":"Get Settings","operationId":"get_settings_api_aurem_dev_admin_settings_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":["Admin-ops-config"],"summary":"Save Settings","operationId":"save_settings_api_aurem_dev_admin_settings_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/aurem-dev/admin/cache/stats":{"get":{"tags":["Admin-ops-config"],"summary":"Cache Stats","description":"Iter 140 — in-memory route cache observability. Returns the\nconfigured routes and currently-live entries with their remaining\nTTLs. Helps validate cache hit rates from the admin dashboard\nwithout scraping logs.","operationId":"cache_stats_api_aurem_dev_admin_cache_stats_get","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/feature-flags":{"get":{"tags":["Admin-ops-config"],"summary":"List Feature Flags","description":"List all feature flags and their status.","operationId":"list_feature_flags_api_aurem_dev_admin_feature_flags_get","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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":["Admin-ops-config"],"summary":"Create Feature Flag","description":"Create or update a feature flag (idempotent upsert).","operationId":"create_feature_flag_api_aurem_dev_admin_feature_flags_post","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/feature-flags/{flag}/toggle":{"post":{"tags":["Admin-ops-config"],"summary":"Toggle Feature Flag","description":"Flip a feature flag's `enabled` boolean.","operationId":"toggle_feature_flag_api_aurem_dev_admin_feature_flags__flag__toggle_post","parameters":[{"name":"flag","in":"path","required":true,"schema":{"type":"string","title":"Flag"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/guardrails":{"get":{"tags":["Admin-ops-config"],"summary":"List Guardrail Modes","description":"Current mode + last-48h WARN/BLOCK event counts per guardrail\nrule — what the founder reviews before flipping warn -> block.","operationId":"list_guardrail_modes_api_aurem_dev_admin_guardrails_get","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/guardrails/{rule}/mode":{"post":{"tags":["Admin-ops-config"],"summary":"Set Guardrail Mode","description":"Flip one guardrail rule's mode. `mode` must be 'warn' or\n'block' — no other value is accepted (fail closed on typos).","operationId":"set_guardrail_mode_api_aurem_dev_admin_guardrails__rule__mode_post","parameters":[{"name":"rule","in":"path","required":true,"schema":{"type":"string","title":"Rule"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/sentry/test":{"post":{"tags":["Admin-ops-config"],"summary":"Sentry Test","operationId":"sentry_test_api_aurem_dev_admin_sentry_test_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/aurem-dev/admin/cache/purge":{"post":{"tags":["Admin-ops-config"],"summary":"Purge Caches","description":"Real, fully-wired cache purge — admin-only.\n\nClears:\n  1. Cloudflare edge cache  (if CLOUDFLARE_API_TOKEN + ZONE_ID set)\n  2. In-memory `lru_cache` of skill_context_injector\n  3. MongoDB TTL caches: repo_context_cache, github_issues_cache,\n     codebase_index_cache (collections used as caches; safe to drop\n     rows — they self-rebuild on next read).\n\nReturns a structured report so the UI can show exactly what landed.\nThe frontend then performs its own client-side step (unregister SWs,\n`caches.delete()`, hard reload).","operationId":"purge_caches_api_aurem_dev_admin_cache_purge_post","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/integrations/health":{"get":{"tags":["Admin-ops-config"],"summary":"Integrations Health","description":"Return the latest cached snapshot of every integration probe.\nIf no snapshot exists yet, run all probes inline (slow first hit).","operationId":"integrations_health_api_aurem_dev_admin_integrations_health_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/aurem-dev/admin/integrations/refresh":{"post":{"tags":["Admin-ops-config"],"summary":"Integrations Refresh","description":"Force-re-probe every integration NOW. Founder-only — each call\nactually hits all the external APIs.","operationId":"integrations_refresh_api_aurem_dev_admin_integrations_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/aurem-dev/admin/db-health":{"get":{"tags":["Admin-ops-config"],"summary":"Db Health","description":"Live DB health snapshot — verifies all required collections are\nmaterialised + the documented indexes exist. Reads the bootstrap\nstate from the last init_prod_collections() run + re-checks the\ncurrent collection set right now.","operationId":"db_health_api_aurem_dev_admin_db_health_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/aurem-dev/admin/github-app-config":{"get":{"tags":["Admin-ops-config"],"summary":"Admin Get Github App Config","description":"Return the current GitHub App config state.\n\nNEVER echoes the raw private key or webhook secret back to the\nclient — only presence flags + last-6 fingerprint of the key and\nan on-demand live probe (`GET /app`) so the admin knows whether\nthe current credentials still authenticate against GitHub.","operationId":"admin_get_github_app_config_api_aurem_dev_admin_github_app_config_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":["Admin-ops-config"],"summary":"Admin Set Github App Config","description":"Validate + persist the GitHub App credentials. Every field is\nchecked non-empty; the PEM is functionally tested against GitHub\n(`GET /app` with a freshly-minted App JWT) BEFORE the row is\nwritten. Hot-swaps into the runtime cache on success.\n\nThe webhook_secret is stored verbatim but not probed here (only\nthe future webhook handler exercises it). It is required non-empty\nso `is_configured()` becomes a single boolean truth.","operationId":"admin_set_github_app_config_api_aurem_dev_admin_github_app_config_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitHubAppConfigBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/github-app-diagnostics":{"get":{"tags":["Admin-ops-config"],"summary":"Admin Github App Diagnostics","description":"End-to-end health probe of services/github_app.py against real\nGitHub. Read-only; safe to spam. Returns a per-step summary so a\npartial failure clearly points at the exact hop that broke.","operationId":"admin_github_app_diagnostics_api_aurem_dev_admin_github_app_diagnostics_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/aurem-dev/admin/github-webhook-fence":{"get":{"tags":["Admin-ops-config"],"summary":"Admin Github Webhook Fence","description":"R5c — App Fence Tile. Live read-only check of the GitHub App's\nwebhook pipeline: which content events are actually subscribed on\nGitHub's side, plus the last 15 real delivery attempts with\nsuccess/fail. Feeds the \"GitHub Webhook Fence\" card on\nAdminSystemHealth. Safe to poll.","operationId":"admin_github_webhook_fence_api_aurem_dev_admin_github_webhook_fence_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/aurem-dev/admin/house-rules":{"get":{"tags":["Admin-ops-config"],"summary":"Admin House Rules Read","description":"Return the current house-rules doc + LLM choice list. Admin-only.","operationId":"admin_house_rules_read_api_aurem_dev_admin_house_rules_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":["Admin-ops-config"],"summary":"Admin House Rules Write","description":"Persist the house-rules doc. Admin-only.\n\nValidates and writes the singleton document; invalidates the\nin-process cache so the next chat turn picks up the new rules.","operationId":"admin_house_rules_write_api_aurem_dev_admin_house_rules_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HouseRulesPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/robot-guide":{"get":{"tags":["Admin-ops-config"],"summary":"Admin Robot Guide Read","description":"Return the current robot-guide messages. Admin-only.","operationId":"admin_robot_guide_read_api_aurem_dev_admin_robot_guide_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":["Admin-ops-config"],"summary":"Admin Robot Guide Write","description":"Persist the robot-guide messages. Admin-only.\n\nBasic HTML (<strong>, <em>, ora-arrow span) is allowed since the\nmessage renders through the RobotGuide component; <script> tags are\nstripped defensively.","operationId":"admin_robot_guide_write_api_aurem_dev_admin_robot_guide_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RobotGuidePayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/debug/repo_context_timings":{"get":{"tags":["Admin-ops-config"],"summary":"Admin Debug Repo Context Timings","description":"Return the 20 most recent `repo_context_timings` samples.\n\nAdmin-only. JSON-safe: `_id` becomes a string, `ts` becomes an ISO\nstring. Surfaces the per-phase millisecond breakdown\n(`tree_fetch_ms`, `rescue_ms`, `inline_ms`, `cache_hit_ms`,\n`total_ms`) plus `files_inlined` and `cold_path` so operators can\nsee at a glance whether the parallel fetch fix is working.","operationId":"admin_debug_repo_context_timings_api_aurem_dev_admin_debug_repo_context_timings_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/aurem-dev/admin/cache/analytics-stats":{"get":{"tags":["Admin-ops-config"],"summary":"Admin Cache Stats","operationId":"admin_cache_stats_api_aurem_dev_admin_cache_analytics_stats_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/aurem-dev/admin/cache/analytics-invalidate":{"post":{"tags":["Admin-ops-config"],"summary":"Admin Cache Invalidate","description":"`{\"key\": \"admin:activation_funnel:v1\"}` flushes one key.\n`{}` flushes everything.  Always returns the number dropped.","operationId":"admin_cache_invalidate_api_aurem_dev_admin_cache_analytics_invalidate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/dev/kill-supervised-task/{name}":{"post":{"tags":["Admin-ops-config"],"summary":"Kill Supervised Task For Ui Test","description":"Simulate a dead supervised task for UI verification.\n\nArgs:\n    name:   The supervised-task name (must match one currently in\n            `supervised_tasks._SUPERVISED`). Case-sensitive.\n    reason: `\"exception\"` (default) or `\"silent_completion\"` —\n            shapes the postmortem row so the widget renders the\n            matching red-state description.\n\nReturns:\n    `{\"ok\": True, \"simulated_dead\": <postmortem_row>}` on success.\n    `404` if the task name isn't currently supervised.\n    `404` if `AUREM_TEST_MODE` is not `\"1\"` (endpoint effectively\n    does not exist on production).","operationId":"kill_supervised_task_for_ui_test_api_aurem_dev_admin_dev_kill_supervised_task__name__post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"reason","in":"query","required":false,"schema":{"type":"string","default":"exception","title":"Reason"}},{"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/aurem-dev/admin/dev/clear-supervised-postmortem/{name}":{"post":{"tags":["Admin-ops-config"],"summary":"Clear Supervised Postmortem For Ui Test","description":"Companion of `/dev/kill-supervised-task` — clears a postmortem\nrow so the founder can confirm the widget flips back to green.\nSame env + admin gates as the kill endpoint.","operationId":"clear_supervised_postmortem_for_ui_test_api_aurem_dev_admin_dev_clear_supervised_postmortem__name__post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"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/aurem-dev/admin/llm/configs":{"get":{"tags":["Admin · LLM Settings"],"summary":"List Configs","operationId":"list_configs_api_aurem_dev_admin_llm_configs_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":["Admin · LLM Settings"],"summary":"Create Config","operationId":"create_config_api_aurem_dev_admin_llm_configs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateConfigBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/llm/configs/{config_id}":{"put":{"tags":["Admin · LLM Settings"],"summary":"Update Config","operationId":"update_config_api_aurem_dev_admin_llm_configs__config_id__put","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","title":"Config Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConfigBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Admin · LLM Settings"],"summary":"Delete Config","operationId":"delete_config_api_aurem_dev_admin_llm_configs__config_id__delete","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","title":"Config Id"}},{"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/aurem-dev/admin/llm/configs/{config_id}/set-active":{"post":{"tags":["Admin · LLM Settings"],"summary":"Set Active Config","operationId":"set_active_config_api_aurem_dev_admin_llm_configs__config_id__set_active_post","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","title":"Config Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetActiveBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/llm/configs/{config_id}/test":{"post":{"tags":["Admin · LLM Settings"],"summary":"Test Config","operationId":"test_config_api_aurem_dev_admin_llm_configs__config_id__test_post","parameters":[{"name":"config_id","in":"path","required":true,"schema":{"type":"string","title":"Config Id"}},{"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/aurem-dev/admin/llm/rate-table":{"get":{"tags":["Admin · LLM Settings"],"summary":"Get Rate Table","operationId":"get_rate_table_api_aurem_dev_admin_llm_rate_table_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":["Admin · LLM Settings"],"summary":"Set Rate Table","operationId":"set_rate_table_api_aurem_dev_admin_llm_rate_table_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateTableBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/llm/usd-caps":{"get":{"tags":["Admin · LLM Settings"],"summary":"Get Usd Caps","operationId":"get_usd_caps_api_aurem_dev_admin_llm_usd_caps_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":["Admin · LLM Settings"],"summary":"Set Usd Caps","operationId":"set_usd_caps_api_aurem_dev_admin_llm_usd_caps_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsdCapsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/llm/usd-caps/spend/{user_id}":{"get":{"tags":["Admin · LLM Settings"],"summary":"Get Spend","operationId":"get_spend_api_aurem_dev_admin_llm_usd_caps_spend__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"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/aurem-dev/admin/llm/usd-caps/backfill":{"post":{"tags":["Admin · LLM Settings"],"summary":"Backfill","operationId":"backfill_api_aurem_dev_admin_llm_usd_caps_backfill_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackfillBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/llm/ora-chat-limits":{"get":{"tags":["Admin · LLM Settings"],"summary":"Read Ora Chat Limits","operationId":"read_ora_chat_limits_api_aurem_dev_admin_llm_ora_chat_limits_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":{"type":"object","title":"Response Read Ora Chat Limits Api Aurem Dev Admin Llm Ora Chat Limits Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Admin · LLM Settings"],"summary":"Update Ora Chat Limits","operationId":"update_ora_chat_limits_api_aurem_dev_admin_llm_ora_chat_limits_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLimitsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Update Ora Chat Limits Api Aurem Dev Admin Llm Ora Chat Limits Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/video/secrets":{"get":{"tags":["Admin · Video generation"],"summary":"Read Secrets","operationId":"read_secrets_api_aurem_dev_admin_video_secrets_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":{"type":"object","title":"Response Read Secrets Api Aurem Dev Admin Video Secrets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Admin · Video generation"],"summary":"Update Secrets","operationId":"update_secrets_api_aurem_dev_admin_video_secrets_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSecretsBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Update Secrets Api Aurem Dev Admin Video Secrets Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/video/secrets/fal-key":{"delete":{"tags":["Admin · Video generation"],"summary":"Remove Fal Key","description":"Switch back to the Emergent Universal Key fallback for lip-sync.","operationId":"remove_fal_key_api_aurem_dev_admin_video_secrets_fal_key_delete","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Remove Fal Key Api Aurem Dev Admin Video Secrets Fal Key Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/video/house-rules":{"get":{"tags":["Admin · Video generation"],"summary":"Read House Rules","operationId":"read_house_rules_api_aurem_dev_admin_video_house_rules_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":{"type":"object","title":"Response Read House Rules Api Aurem Dev Admin Video House Rules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Admin · Video generation"],"summary":"Update House Rules","operationId":"update_house_rules_api_aurem_dev_admin_video_house_rules_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateHouseRulesBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Update House Rules Api Aurem Dev Admin Video House Rules Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/video/avatars":{"post":{"tags":["Admin · Video generation"],"summary":"Add Avatar","operationId":"add_avatar_api_aurem_dev_admin_video_avatars_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_add_avatar_api_aurem_dev_admin_video_avatars_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Add Avatar Api Aurem Dev Admin Video Avatars Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin · Video generation"],"summary":"List Avatars","operationId":"list_avatars_api_aurem_dev_admin_video_avatars_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":{"type":"object","title":"Response List Avatars Api Aurem Dev Admin Video Avatars Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/video/avatars/{avatar_id}":{"delete":{"tags":["Admin · Video generation"],"summary":"Delete Avatar","operationId":"delete_avatar_api_aurem_dev_admin_video_avatars__avatar_id__delete","parameters":[{"name":"avatar_id","in":"path","required":true,"schema":{"type":"string","title":"Avatar Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Avatar Api Aurem Dev Admin Video Avatars  Avatar Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/video/jobs":{"post":{"tags":["Admin · Video generation"],"summary":"Create Job","operationId":"create_job_api_aurem_dev_admin_video_jobs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateJobBody"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Job Api Aurem Dev Admin Video Jobs Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin · Video generation"],"summary":"List Jobs","operationId":"list_jobs_api_aurem_dev_admin_video_jobs_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":{"type":"object","title":"Response List Jobs Api Aurem Dev Admin Video Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/video/jobs/{job_id}":{"get":{"tags":["Admin · Video generation"],"summary":"Get Job","operationId":"get_job_api_aurem_dev_admin_video_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Job Api Aurem Dev Admin Video Jobs  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/notifications":{"get":{"tags":["Notifications"],"summary":"List My Notifications","operationId":"list_my_notifications_api_aurem_dev_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/aurem-dev/notifications/{notif_id}/read":{"post":{"tags":["Notifications"],"summary":"Mark One Read","operationId":"mark_one_read_api_aurem_dev_notifications__notif_id__read_post","parameters":[{"name":"notif_id","in":"path","required":true,"schema":{"type":"string","title":"Notif Id"}},{"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/aurem-dev/notifications/read-all":{"post":{"tags":["Notifications"],"summary":"Mark All Read","operationId":"mark_all_read_api_aurem_dev_notifications_read_all_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/aurem-dev/admin/qa/cleanup-e2e-sessions":{"post":{"tags":["Admin-analytics"],"summary":"Cleanup E2E Sessions","operationId":"cleanup_e2e_sessions_api_aurem_dev_admin_qa_cleanup_e2e_sessions_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/aurem-dev/admin/audit":{"get":{"tags":["Admin-analytics"],"summary":"Audit Feed","description":"Read the `ora_audit` collection. Backed by `audit_log.list_turns`.\nUsed by the admin panel's Audit tab to surface every ORA turn,\ncitation-guard triggers, and tool-error signals.","operationId":"audit_feed_api_aurem_dev_admin_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},{"name":"signals_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Signals Only"}},{"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/aurem-dev/admin/dashboard":{"get":{"tags":["Admin-analytics"],"summary":"Dashboard","operationId":"dashboard_api_aurem_dev_admin_dashboard_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/aurem-dev/admin/pulse":{"get":{"tags":["Admin-analytics"],"summary":"Business Pulse","description":"Feb 2026 — cockpit Business Pulse endpoint. Returns BOTH raw\nand organic-only counts, plus explicit env tag so a preview\nreading is never mistaken for a production reading again.\n\nOrganic filter uses services.synthetic_filter (single source of\ntruth also consumed by G2 marketing-truth guard). Env tag comes\nfrom services.env_context — same helper backs the cockpit\n'PREVIEW DATA' badge.\n\nFeb 2026 · prod-hang fix — original implementation ran 8 sequential\n`count_documents(...)` calls; if any one query stalled (missing\nindex on a large collection) the whole endpoint hung forever.\nNow runs them concurrently via asyncio.gather with a hard 10s\nouter timeout so a slow query surfaces as a fast error, not a\npermanently pending request.","operationId":"business_pulse_api_aurem_dev_admin_pulse_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/aurem-dev/admin/system-stats":{"get":{"tags":["Admin-analytics"],"summary":"Admin System Stats","description":"Aggregates the 4 observability collections written by recent\niters (parliament_log, intent_classifications, quality_scores,\nplus syntax_gate metrics derived from chat.py logs).","operationId":"admin_system_stats_api_aurem_dev_admin_system_stats_get","parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Window Hours"}},{"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/aurem-dev/admin/council/stats":{"get":{"tags":["Admin-analytics"],"summary":"Council Stats","description":"Lightweight aggregate for AdminOverview — total council rows +\nlast-30-days slice + Claude correction rate + per-mode breakdown.\nNo PII.","operationId":"council_stats_api_aurem_dev_admin_council_stats_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/aurem-dev/admin/council/health":{"get":{"tags":["Admin-analytics"],"summary":"Council Health","description":"Live status of Council A's LongCat primary and its GLM-5.2\nfallback path.\n\nRationale — Production ran silently on the GLM-5.2 fallback for\nan unknown time before it surfaced as an Ask Advisor bug\n(`<tool_call>read_repo_file)(\"README.md\")` malformed emissions).\nThis endpoint gives the admin dashboard a live badge so future\ndegradations are visible within the 15 min re-probe window.\n\nReturns the in-memory snapshot plus the last 20 persisted probe\nrows for a small trailing history so the on-call can see whether\nthe degradation is a hard-fail (repeated errors) or intermittent.","operationId":"council_health_api_aurem_dev_admin_council_health_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/aurem-dev/admin/council/reprobe":{"post":{"tags":["Admin-analytics"],"summary":"Council Reprobe","description":"Force an immediate LongCat re-probe. Founder-only.\nReturns the fresh probe snapshot so the caller can render the new\nbadge without a second round-trip. Rate-limit: at most 1 call\nevery 3 s per pod (simple in-memory guard) to prevent probe spam.","operationId":"council_reprobe_api_aurem_dev_admin_council_reprobe_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/aurem-dev/admin/council-health":{"get":{"tags":["Admin-analytics"],"summary":"Council Health Alias","description":"Alias for GET /admin/council/health (kebab-case spelling).","operationId":"council_health_alias_api_aurem_dev_admin_council_health_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/aurem-dev/admin/ora-learning/weekly-summary":{"get":{"tags":["Admin-analytics"],"summary":"Ora Learning Weekly Summary","description":"Iter 153 — top low-confidence patterns from the last 7 days of\nora_learning_logs. Powers the AdminOverview learning card.","operationId":"ora_learning_weekly_summary_api_aurem_dev_admin_ora_learning_weekly_summary_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":{"type":"object","title":"Response Ora Learning Weekly Summary Api Aurem Dev Admin Ora Learning Weekly Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/token-pnl":{"get":{"tags":["Admin-analytics"],"summary":"Token Pnl","operationId":"token_pnl_api_aurem_dev_admin_token_pnl_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/aurem-dev/admin/agent-tokens":{"get":{"tags":["Admin-analytics"],"summary":"Agent Tokens","operationId":"agent_tokens_api_aurem_dev_admin_agent_tokens_get","parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"7d","title":"Range"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/digest":{"get":{"tags":["Admin-analytics"],"summary":"Get Digest","description":"Returns the same 1-pager that the daily cron sends. Preview-friendly.","operationId":"get_digest_api_aurem_dev_admin_digest_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/aurem-dev/admin/learning-health":{"get":{"tags":["Admin-analytics"],"summary":"Learning Health","description":"Iter 331 · ORA learning-health (PRD #3-e) — data for the\n/admin/architecture tile. GREEN = project_brains touched <24h,\nRED = stale, EMPTY = no brains yet. Every collection read is\nfail-open so one bad collection never blanks the tile.","operationId":"learning_health_api_aurem_dev_admin_learning_health_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/aurem-dev/admin/live-model-mode":{"get":{"tags":["Admin-analytics"],"summary":"Live Model Mode","description":"X1 hardening (2026-08-30, overnight-loop-2 P0) — dedicated,\nhonest \"is this process actually serving real model calls right\nnow\" signal. Deliberately a NEW, separate tile — NOT a repurpose\nof the Codebase Health Score widget (/admin/health-score), which\nmeasures static code quality (security/architecture/etc.) and has\nnothing to do with live LLM serving state. Conflating the two was\nthe reason the founder's regression test saw the wrong \"100\"\nbadge stay green through a mock-mode window — that widget was\nnever meant to reflect this.","operationId":"live_model_mode_api_aurem_dev_admin_live_model_mode_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/aurem-dev/admin/ora/stats":{"get":{"tags":["Admin-analytics"],"summary":"Ora Council Stats","description":"Quick summary: total logs, by-mode counts, correction rate,\npending-export queue, fine-tune readiness.","operationId":"ora_council_stats_api_aurem_dev_admin_ora_stats_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/aurem-dev/admin/ora-stats":{"get":{"tags":["Admin-analytics"],"summary":"Ora Council Stats V2","description":"Alias for AuremAdminPanel (uses /admin/ora-stats path).","operationId":"ora_council_stats_v2_api_aurem_dev_admin_ora_stats_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/aurem-dev/admin/ora/export":{"post":{"tags":["Admin-analytics"],"summary":"Ora Council Export","description":"Manually trigger yesterday's JSONL export. Daily cron also runs it.","operationId":"ora_council_export_api_aurem_dev_admin_ora_export_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/aurem-dev/admin/skills/web-search":{"post":{"tags":["Admin-analytics"],"summary":"Skill Web Search","operationId":"skill_web_search_api_aurem_dev_admin_skills_web_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SkillBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/skills/fetch-url":{"post":{"tags":["Admin-analytics"],"summary":"Skill Fetch Url","operationId":"skill_fetch_url_api_aurem_dev_admin_skills_fetch_url_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SkillBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/skills/search-and-summarize":{"post":{"tags":["Admin-analytics"],"summary":"Skill Web Search And Summarize","operationId":"skill_web_search_and_summarize_api_aurem_dev_admin_skills_search_and_summarize_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SkillBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/skills/firecrawl-scrape":{"post":{"tags":["Admin-analytics"],"summary":"Skill Firecrawl Scrape","operationId":"skill_firecrawl_scrape_api_aurem_dev_admin_skills_firecrawl_scrape_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SkillBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/skills/firecrawl-crawl":{"post":{"tags":["Admin-analytics"],"summary":"Skill Firecrawl Crawl","operationId":"skill_firecrawl_crawl_api_aurem_dev_admin_skills_firecrawl_crawl_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SkillBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/skills/status":{"get":{"tags":["Admin-analytics"],"summary":"Skill Status","description":"Reveal which web skills are wired (key present). No secrets returned.","operationId":"skill_status_api_aurem_dev_admin_skills_status_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/aurem-dev/admin/eval-quality":{"get":{"tags":["Admin-analytics"],"summary":"Eval Quality","description":"Last 30 days of eval runs (from `ora_eval_runs`). Returns:\n   latest      — most recent run summary (None if no runs yet)\n   trend       — chronological score list [{ts, score, hard_fails}]\n   totals      — { runs, hard_fail_runs, avg_score, last30d_runs }\nRead-only, admin only, no external calls.","operationId":"eval_quality_api_aurem_dev_admin_eval_quality_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/aurem-dev/admin/mode-telemetry":{"get":{"tags":["Admin-analytics"],"summary":"Mode Telemetry","description":"Aggregates the last 100 mode classifications + the most recent 10\nraw entries. Lets the founder see which modes ORA picks most often,\nhow often it asks for confirmation, and how confident it is on avg.","operationId":"mode_telemetry_api_aurem_dev_admin_mode_telemetry_get","parameters":[{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/product-analytics":{"get":{"tags":["Admin-analytics"],"summary":"Product Analytics","description":"Real product analytics — DAU, MAU, mode usage, feature adoption,\ntask success rate, token burn, top users.\n\nIter 139 — replaces the previous \"Analytics\" page that only showed\nMode-Council debate logs. This endpoint hits the same collections\nthe rest of the platform writes to, so every number is sourced\nfrom real user activity (no estimates, no stubs).","operationId":"product_analytics_api_aurem_dev_admin_product_analytics_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"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/aurem-dev/admin/vanguard/stats":{"get":{"tags":["Admin-analytics"],"summary":"Vanguard Stats","description":"Stats for the admin Vanguard dashboard:\ntotal blocked this window, top rule, by-rule / by-project /\nby-severity breakdowns, day-bucketed sparkline.","operationId":"vanguard_stats_api_aurem_dev_admin_vanguard_stats_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"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/aurem-dev/admin/vanguard/recent":{"get":{"tags":["Admin-analytics"],"summary":"Vanguard Recent","description":"Most recent N blocked-commit rows for the table.","operationId":"vanguard_recent_api_aurem_dev_admin_vanguard_recent_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"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/aurem-dev/admin/skills-usage":{"get":{"tags":["Admin-analytics"],"summary":"Skills Usage","description":"Aggregate ora_skill_usage over the last N days.\n\nReturns per-skill: call count, success rate, p50/p95 elapsed_ms.\nUse to identify dead-weight skills (<2% of calls) for pruning.","operationId":"skills_usage_api_aurem_dev_admin_skills_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}},{"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/aurem-dev/admin/failure-patterns":{"get":{"tags":["Admin-analytics"],"summary":"Failure Patterns","description":"Which task types / prompt patterns / tool sequences fail most,\nwith a click-through to the truncated failure reasoning text (only\never persisted on failure — see task_chain_logging.py's module\ndocstring). This is the analysis half of the self-improving loop —\nprompts get better over time by looking at what's here.","operationId":"failure_patterns_api_aurem_dev_admin_failure_patterns_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"task_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task Type"}},{"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/aurem-dev/admin/overview-metrics":{"get":{"tags":["Admin-analytics"],"summary":"Admin Overview Metrics","description":"Extended metrics for the Admin Overview tab.\n\nReturns one flat object with every metric the new cards need:\n  - active_users_today, tasks_today, tasks_done_today\n  - avg_task_seconds (over last 100 done tasks)\n  - mcp_keys_total / mcp_keys_active_30d\n  - warm_starts_24h with success_rate_pct\n  - postscan_findings_7d (critical + warning split)\n  - most_active_project (name + task_count last 7 d)\n  - mode_distribution_30d (swift/pro/maxx counts)\n  - revenue_30d (sum of completed cto_payments)","operationId":"admin_overview_metrics_api_aurem_dev_admin_overview_metrics_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/aurem-dev/admin/mcp-usage":{"get":{"tags":["Admin-analytics"],"summary":"Admin Mcp Usage","description":"Recent MCP API keys with usage timestamps for the MCP Usage tab.","operationId":"admin_mcp_usage_api_aurem_dev_admin_mcp_usage_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"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/aurem-dev/admin/warm-start-stats":{"get":{"tags":["Admin-analytics"],"summary":"Admin Warm Start Stats","description":"Warm-start latency & success metrics for the dedicated tab.\n\n`avg_seconds` covers the last 100 done jobs over 30 d; the breakdown\nshows the per-status counts over 7 d so we can spot a stuck queue.","operationId":"admin_warm_start_stats_api_aurem_dev_admin_warm_start_stats_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/aurem-dev/admin/graph-status":{"get":{"tags":["Admin-analytics"],"summary":"Admin Graph Status","description":"Which projects have a Knowledge Graph built (and how recently).\n\n2026-08-27 · FIX (Journey Watch investigation, Finding 2): this\nendpoint used to read `graph_built_at` / `graph_node_count` off\n`cto_projects` — fields NO code path ever writes. The real graph\nbuilder (`services/graph_builder.py::build_graph`) only ever\nwrites to `db.project_graphs` (keyed by `project_id`+`user_id`,\nwith `built_at` epoch float + `file_count`). That mismatch is why\nAdmin showed \"Graph: no\" on 100% of projects even though real,\nfully-built graphs existed in `project_graphs` the whole time.","operationId":"admin_graph_status_api_aurem_dev_admin_graph_status_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Limit"}},{"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/aurem-dev/admin/agent-performance":{"get":{"tags":["Admin-analytics"],"summary":"Admin Agent Performance","description":"Smart-router agent stats — real per-model call volume + cost.\n\n2026-08-26 — ROOT FIX: this previously aggregated `cto_tasks` on a\n`model` field that DOESN'T EXIST on any document in that collection\n(cto_tasks only holds health_fix admin auto-remediation rows — no\nmodel attribution, ever). Result: always `per_model_30d: []`,\ncontradicting the Cockpit's LLM Credits / Cost-by-Model widgets,\nwhich correctly read `customer_chat_cost` (the real per-call LLM\nusage ledger — same source `admin_bi.py::_fetch_inference_metrics`\nalready uses for its by-model breakdown). Switched to the same\nreal source. `done`/`avg_secs` (task success rate / latency) had\nno real backing data at this granularity either — dropped rather\nthan fabricated; replaced with real cost + token fields.","operationId":"admin_agent_performance_api_aurem_dev_admin_agent_performance_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/aurem-dev/admin/seo/run":{"post":{"tags":["Admin-analytics"],"summary":"Admin Seo Run","operationId":"admin_seo_run_api_aurem_dev_admin_seo_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_SeoRunPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/loop-metrics":{"get":{"tags":["Admin-analytics"],"summary":"Loop Metrics","operationId":"loop_metrics_api_aurem_dev_admin_loop_metrics_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/aurem-dev/admin/visibility-kit/dashboard":{"get":{"tags":["Admin-analytics"],"summary":"Visibility Kit Admin Dashboard","description":"2026-08-30 — Visibility Kit admin tile (spec §6). Per-project kit\nstatus across every project that has ANY visibility_states row (i.e.\nhas been scanned at least once), pass rate (score>=1 / total scanned),\nlast-failure hint. Citation-data section is an HONEST PLACEHOLDER —\nA7's day-14 recheck was never wired in this round (founder's explicit\ncall, Q4 (b)): no fake numbers, ever.","operationId":"visibility_kit_admin_dashboard_api_aurem_dev_admin_visibility_kit_dashboard_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/aurem-dev/admin/preview-deploy-monitor":{"get":{"tags":["Admin-analytics"],"summary":"Preview Deploy Monitor","description":"S4/S5 — Trust Surfaces Round (2026-08-29). Extends the existing\nAdminSystemHealth page (same admin-only, read-only, 0-LLM pattern\nas /loop-metrics and /github-webhook-fence) with a Preview & Deploy\nmonitor tile, next to the Webhook Fence tile, plus the S5 30-day\nmeter line's data. Reads services/trust_surface_events.py's new\ncollection + the existing aurem_cto_deploy_runs collection — no\nnew storage system, no LLM calls.","operationId":"preview_deploy_monitor_api_aurem_dev_admin_preview_deploy_monitor_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/aurem-dev/admin/drift-alerts":{"get":{"tags":["Admin-analytics"],"summary":"Drift Alerts","description":"R1a gap#4 admin visibility (2026-08-30) — surfaces drift-\nblocked rollbacks (the `ship_rollback_drift_detected` trust event,\nalready logged by the drift fix), last 24h, next to the Webhook\nFence tile. READ-ONLY — the admin can see, not act; only the loop\nowner acknowledges drift, in their own chat. Same admin-only,\n0-LLM pattern as /preview-deploy-monitor.","operationId":"drift_alerts_api_aurem_dev_admin_drift_alerts_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/aurem-dev/admin/loop-token-metrics":{"get":{"tags":["Admin-analytics"],"summary":"Loop Token Metrics","operationId":"loop_token_metrics_api_aurem_dev_admin_loop_token_metrics_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/aurem-dev/admin/loop-inspect/{loop_id}":{"get":{"tags":["Admin-analytics"],"summary":"Loop Inspect","operationId":"loop_inspect_api_aurem_dev_admin_loop_inspect__loop_id__get","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"tail","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Tail"}},{"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/aurem-dev/admin/speed-diagnostic":{"get":{"tags":["Admin-analytics"],"summary":"Speed Diagnostic","operationId":"speed_diagnostic_api_aurem_dev_admin_speed_diagnostic_get","parameters":[{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Window Days"}},{"name":"sample","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Sample"}},{"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/aurem-dev/admin/scope-drift-audit":{"get":{"tags":["Admin-analytics"],"summary":"Scope Drift Audit","operationId":"scope_drift_audit_api_aurem_dev_admin_scope_drift_audit_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"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/aurem-dev/admin/bi/stripe-metrics":{"get":{"tags":["Admin-BI"],"summary":"Stripe Metrics","operationId":"stripe_metrics_api_aurem_dev_admin_bi_stripe_metrics_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/aurem-dev/admin/bi/inference-metrics":{"get":{"tags":["Admin-BI"],"summary":"Inference Metrics","operationId":"inference_metrics_api_aurem_dev_admin_bi_inference_metrics_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/aurem-dev/admin/bi/summary":{"get":{"tags":["Admin-BI"],"summary":"Summary","description":"One-shot payload the cockpit hits on load. Runs both fetches\nconcurrently so the UI paints without a waterfall.","operationId":"summary_api_aurem_dev_admin_bi_summary_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/aurem-dev/admin/health-score":{"get":{"tags":["Admin-Health-Score"],"summary":"Get Score","operationId":"get_score_api_aurem_dev_admin_health_score_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":{"type":"object","title":"Response Get Score Api Aurem Dev Admin Health Score Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/health-score/test-coverage/run":{"post":{"tags":["Admin-Health-Score"],"summary":"Trigger Coverage Run","description":"Fire-and-forget — a full pytest+coverage run takes minutes, well\npast this environment's ingress upstream timeout, so we launch it\ndetached and let the admin poll GET /health-score for the fresh\nresult (health_test_coverage_runs.generated_at) instead of holding\nthe HTTP connection open.","operationId":"trigger_coverage_run_api_aurem_dev_admin_health_score_test_coverage_run_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":{"type":"object","title":"Response Trigger Coverage Run Api Aurem Dev Admin Health Score Test Coverage Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/health-score/architecture-review":{"get":{"tags":["Admin-Health-Score"],"summary":"List Architecture Reviews","operationId":"list_architecture_reviews_api_aurem_dev_admin_health_score_architecture_review_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Architecture Reviews Api Aurem Dev Admin Health Score Architecture Review Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin-Health-Score"],"summary":"Submit Architecture Review","description":"Body: {reviewer, notes, rubric: {coupling: 0-100, spof: 0-100, ...}}\nReal qualitative entries only — no default/placeholder rubric is\never auto-generated, per the founder's no-fabrication constraint.","operationId":"submit_architecture_review_api_aurem_dev_admin_health_score_architecture_review_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Submit Architecture Review Api Aurem Dev Admin Health Score Architecture Review Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/deploy-readiness":{"get":{"tags":["Admin-Deploy-Readiness"],"summary":"Deploy Readiness","operationId":"deploy_readiness_api_aurem_dev_admin_deploy_readiness_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":{"type":"object","title":"Response Deploy Readiness Api Aurem Dev Admin Deploy Readiness Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/ora/context-bridge":{"post":{"tags":["Admin-Context-Bridge"],"summary":"Receive Context Bridge","operationId":"receive_context_bridge_api_aurem_dev_admin_ora_context_bridge_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextBridgePayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Receive Context Bridge Api Aurem Dev Admin Ora Context Bridge Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/founder-summary/generate":{"post":{"tags":["founder-summary"],"summary":"Generate","operationId":"generate_api_aurem_dev_admin_founder_summary_generate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Generate Api Aurem Dev Admin Founder Summary Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/founder-summary/{event_id}":{"get":{"tags":["founder-summary"],"summary":"Get Summary","operationId":"get_summary_api_aurem_dev_admin_founder_summary__event_id__get","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","title":"Event Id"}},{"name":"view","in":"query","required":false,"schema":{"type":"string","default":"founder","title":"View"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Summary Api Aurem Dev Admin Founder Summary  Event Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/rollback2/snapshot":{"post":{"tags":["Admin-Rollback-v2"],"summary":"Create Snapshot Ep","operationId":"create_snapshot_ep_api_aurem_dev_admin_rollback2_snapshot_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/rollback2/snapshots":{"get":{"tags":["Admin-Rollback-v2"],"summary":"List Snapshots","operationId":"list_snapshots_api_aurem_dev_admin_rollback2_snapshots_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"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/aurem-dev/admin/rollback2/preview":{"post":{"tags":["Admin-Rollback-v2"],"summary":"Preview Ep","operationId":"preview_ep_api_aurem_dev_admin_rollback2_preview_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/rollback2/execute":{"post":{"tags":["Admin-Rollback-v2"],"summary":"Execute Ep","operationId":"execute_ep_api_aurem_dev_admin_rollback2_execute_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExecuteReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/rollback2/attempts":{"get":{"tags":["Admin-Rollback-v2"],"summary":"List Attempts","operationId":"list_attempts_api_aurem_dev_admin_rollback2_attempts_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Limit"}},{"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/aurem-dev/admin/rollback2/drill":{"post":{"tags":["Admin-Rollback-v2"],"summary":"Run Drill Ep","operationId":"run_drill_ep_api_aurem_dev_admin_rollback2_drill_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/aurem-dev/admin/rollback2/drills":{"get":{"tags":["Admin-Rollback-v2"],"summary":"List Drills","operationId":"list_drills_api_aurem_dev_admin_rollback2_drills_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"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/aurem-dev/admin/github-auth/pat-inventory":{"get":{"tags":["Admin-GitHub-Auth"],"summary":"Pat Inventory","operationId":"pat_inventory_api_aurem_dev_admin_github_auth_pat_inventory_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/aurem-dev/admin/github-auth/migrate":{"post":{"tags":["Admin-GitHub-Auth"],"summary":"Migrate","operationId":"migrate_api_aurem_dev_admin_github_auth_migrate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MigrateReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/support/tickets":{"post":{"tags":["Support"],"summary":"Create Ticket","description":"Logged-in ticket create. Subject is optional — first line of the\nbody becomes the subject if not provided (matches the popup UX\nwhich is subject-less).","operationId":"create_ticket_api_aurem_dev_support_tickets_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTicket"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Ticket Api Aurem Dev Support Tickets Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Support"],"summary":"List My Tickets","operationId":"list_my_tickets_api_aurem_dev_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":{"type":"object","title":"Response List My Tickets Api Aurem Dev Support Tickets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/support/tickets/token":{"post":{"tags":["Support"],"summary":"Create Ticket By Token","description":"Public, no-login ticket create — verified via HMAC token\ngenerated at email-send time (same secret + pattern as unsubscribe).\nUsed by the \"Need help?\" link inside every campaign email.","operationId":"create_ticket_by_token_api_aurem_dev_support_tickets_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTicketByToken"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Ticket By Token Api Aurem Dev Support Tickets Token Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/support/tickets/public":{"post":{"tags":["Support"],"summary":"Create Ticket Public","description":"Fully public, no-login, no-token ticket create.\n\n2026-08-19 fix: before this, the ONLY unauthenticated path was\n`/tickets/token`, which requires a signed HMAC token that only\nexists inside campaign emails. A pre-signup visitor clicking the\nsite's own footer \"Support\" link had no way to reach us at all —\nthis endpoint is that path. Since it takes zero identity proof,\nit's per-IP rate-limited like the promo waitlist endpoint.","operationId":"create_ticket_public_api_aurem_dev_support_tickets_public_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTicketPublic"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Ticket Public Api Aurem Dev Support Tickets Public Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/support/tickets/{ticket_id}":{"get":{"tags":["Support"],"summary":"Get My Ticket","operationId":"get_my_ticket_api_aurem_dev_support_tickets__ticket_id__get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get My Ticket Api Aurem Dev Support Tickets  Ticket Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/support/tickets/{ticket_id}/thread":{"get":{"tags":["Support"],"summary":"Get Ticket Thread Public","description":"Public thread read. `t` = HMAC token, `e` = email of ticket\nowner. Verifies token matches email, then verifies ticket belongs\nto that email.","operationId":"get_ticket_thread_public_api_aurem_dev_support_tickets__ticket_id__thread_get","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"t","in":"query","required":true,"schema":{"type":"string","title":"T"}},{"name":"e","in":"query","required":true,"schema":{"type":"string","title":"E"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Ticket Thread Public Api Aurem Dev Support Tickets  Ticket Id  Thread Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/support/tickets/{ticket_id}/reply/token":{"post":{"tags":["Support"],"summary":"Reply To Ticket By Token","description":"Public HMAC-verified reply to an existing ticket. Lets the user\ncontinue the conversation from the thread-view page without logging\nin (same signed link they got in the email).","operationId":"reply_to_ticket_by_token_api_aurem_dev_support_tickets__ticket_id__reply_token_post","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyByToken"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Reply To Ticket By Token Api Aurem Dev Support Tickets  Ticket Id  Reply Token Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/payments/checkout":{"post":{"tags":["Payments"],"summary":"Create Checkout","operationId":"create_checkout_api_aurem_dev_payments_checkout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Checkout Api Aurem Dev Payments Checkout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/payments/status/{session_id}":{"get":{"tags":["Payments"],"summary":"Payment Status","operationId":"payment_status_api_aurem_dev_payments_status__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Payment Status Api Aurem Dev Payments Status  Session Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/webhook/stripe":{"post":{"tags":["Payments"],"summary":"Stripe Webhook","operationId":"stripe_webhook_api_aurem_dev_webhook_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Stripe Webhook Api Aurem Dev Webhook Stripe Post"}}}}}}},"/api/aurem-dev/payments/webhook":{"post":{"tags":["Payments"],"summary":"Stripe Webhook","operationId":"stripe_webhook_api_aurem_dev_payments_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Stripe Webhook Api Aurem Dev Payments Webhook Post"}}}}}}},"/api/aurem-dev/payments/my-plan":{"get":{"tags":["Payments"],"summary":"My Plan","operationId":"my_plan_api_aurem_dev_payments_my_plan_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":{"type":"object","title":"Response My Plan Api Aurem Dev Payments My Plan Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/payments/portal":{"post":{"tags":["Payments"],"summary":"Billing Portal","operationId":"billing_portal_api_aurem_dev_payments_portal_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":{"type":"object","title":"Response Billing Portal Api Aurem Dev Payments Portal Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/stripe/webhook":{"post":{"summary":"Stripe Webhook Compat","description":"Delegate to the canonical Stripe webhook handler.\n\nWe import + call the real handler rather than duplicating logic —\nsignature verification, event routing, cto_payments transitions,\ndev_users upgrades, and alert wiring stay in one place.","operationId":"stripe_webhook_compat_api_stripe_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Stripe Webhook Compat Api Stripe Webhook Post"}}}}}}},"/api/aurem-dev/usage/me":{"get":{"tags":["Usage"],"summary":"My Usage","description":"Return the current user's token budget.\n\nShape (consumed by `ChatPanel.jsx` warning banner):\n  {\n    user_id, tier, plan_limit, tokens_granted, effective_limit,\n    used, remaining, pct_used, is_exhausted\n  }","operationId":"my_usage_api_aurem_dev_usage_me_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/aurem-dev/usage/maxx":{"get":{"tags":["Usage"],"summary":"My Maxx Usage","description":"Return the current user's Maxx-mode budget for this month.\n\nShape:\n  {\n    tier, cap, used, remaining, capped\n  }\ncap=None means unlimited (Team/Founder). cap=0 means tier has no\nMaxx access (Free/Starter).","operationId":"my_maxx_usage_api_aurem_dev_usage_maxx_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/aurem-dev/usage/public/stats":{"get":{"tags":["Usage"],"summary":"Public Stats","description":"Public marketing tile. 60-second in-memory cache to keep Atlas\nload O(1) regardless of visitor traffic.","operationId":"public_stats_api_aurem_dev_usage_public_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aurem-dev/lint/preview":{"post":{"tags":["Lint"],"summary":"Preview Lint","description":"Returns {blocked, warnings, block_reasons[], warning_list[]}.","operationId":"preview_lint_api_aurem_dev_lint_preview_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LintBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/wall/feed":{"get":{"tags":["Ship Wall"],"summary":"Ship Wall Feed","description":"Public feed — last N ships across all opted-in developers.\nNo auth needed. Called every 30s by the Ship Wall page.\nCached for 30s per limit value (see _FEED_CACHE above) — at one\nviewer Atlas hit per 30s instead of one per viewer per 30s.","operationId":"ship_wall_feed_api_aurem_dev_wall_feed_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Ship Wall Feed Api Aurem Dev Wall Feed Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/wall/user/{handle}":{"get":{"tags":["Ship Wall"],"summary":"Developer Wall","description":"Public profile wall for one developer. No auth needed.","operationId":"developer_wall_api_aurem_dev_wall_user__handle__get","parameters":[{"name":"handle","in":"path","required":true,"schema":{"type":"string","title":"Handle"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Developer Wall Api Aurem Dev Wall User  Handle  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/wall/card/{task_id}":{"get":{"tags":["Ship Wall"],"summary":"Ship Card","description":"Returns OG card data for a single ship.\nUsed by: share modal, Twitter/X cards, LinkedIn previews.","operationId":"ship_card_api_aurem_dev_wall_card__task_id__get","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","title":"Task Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Ship Card Api Aurem Dev Wall Card  Task Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/wall/badge/{user_id}":{"get":{"tags":["Ship Wall"],"summary":"Readme Badge","description":"Returns an SVG badge for GitHub READMEs.\nUsage: ![Built with AUREM](https://auremcto.com/api/aurem-dev/wall/badge/USER_ID)","operationId":"readme_badge_api_aurem_dev_wall_badge__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/wall/stats":{"get":{"tags":["Ship Wall"],"summary":"Wall Stats","description":"Global numbers shown on the Ship Wall page.","operationId":"wall_stats_api_aurem_dev_wall_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Wall Stats Api Aurem Dev Wall Stats Get"}}}}}}},"/api/aurem-dev/wall/opt-out":{"post":{"tags":["Ship Wall"],"summary":"Wall Opt Out","description":"Developer hides all their ships from the public wall (also the\ndefault state now — SEC-003 fix, 2026-08-19: wall is opt-IN).","operationId":"wall_opt_out_api_aurem_dev_wall_opt_out_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Wall Opt Out Api Aurem Dev Wall Opt Out Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/wall/opt-in":{"post":{"tags":["Ship Wall"],"summary":"Wall Opt In","description":"Developer explicitly makes their ships public on the wall.","operationId":"wall_opt_in_api_aurem_dev_wall_opt_in_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Wall Opt In Api Aurem Dev Wall Opt In Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/wrapped/me":{"get":{"tags":["ORA Wrapped"],"summary":"My Wrapped","description":"Returns the developer's ORA Wrapped stats for the given period.\nperiod: 'this_month' | 'last_month' | 'all'","operationId":"my_wrapped_api_aurem_dev_wrapped_me_get","parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"this_month","title":"Period"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response My Wrapped Api Aurem Dev Wrapped Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/hosted-deploy/connect":{"post":{"tags":["Hosted Deploy"],"summary":"Connect","operationId":"connect_api_aurem_dev_hosted_deploy_connect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__hosted_deploy__ConnectBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Connect Api Aurem Dev Hosted Deploy Connect Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/hosted-deploy/status/{project_id}":{"get":{"tags":["Hosted Deploy"],"summary":"Status","operationId":"status_api_aurem_dev_hosted_deploy_status__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Status Api Aurem Dev Hosted Deploy Status  Project Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/hosted-deploy/ship":{"post":{"tags":["Hosted Deploy"],"summary":"Ship","description":"Fire the stored deploy hook. The provider kicks a fresh build\nfrom the latest commit on the connected branch.","operationId":"ship_api_aurem_dev_hosted_deploy_ship_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShipBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Ship Api Aurem Dev Hosted Deploy Ship Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/hosted-deploy/disconnect/{project_id}":{"delete":{"tags":["Hosted Deploy"],"summary":"Disconnect","operationId":"disconnect_api_aurem_dev_hosted_deploy_disconnect__project_id__delete","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Disconnect Api Aurem Dev Hosted Deploy Disconnect  Project Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/codebase/refresh/{project_id}":{"post":{"tags":["AUREM Codebase"],"summary":"Refresh Route","description":"Refresh the cached index for the given AUREM project. Reads the\nproject's `github_url` + `github_token` (already stored encrypted /\nplain in `cto_projects`).","operationId":"refresh_route_api_aurem_dev_codebase_refresh__project_id__post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Refresh Route Api Aurem Dev Codebase Refresh  Project Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/codebase/index/{project_id}":{"get":{"tags":["AUREM Codebase"],"summary":"Get Index","operationId":"get_index_api_aurem_dev_codebase_index__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Index Api Aurem Dev Codebase Index  Project Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/new-project":{"post":{"tags":["Scaffold — Personal Track"],"summary":"Create New Project","description":"Create a Personal Track draft.\n\nPhase 1 scope: generate a file tree in memory + persist to\n`db.scaffold_drafts`. NO GitHub repo is created — that's Phase 2's\nmaterialize step.","operationId":"create_new_project_api_aurem_dev_scaffold_new_project_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewProjectBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create New Project Api Aurem Dev Scaffold New Project Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/{draft_id}":{"get":{"tags":["Scaffold — Personal Track"],"summary":"Get Draft","description":"Fetch a draft for review. Returns 404 if the draft doesn't exist\nOR belongs to another user (never leak existence).","operationId":"get_draft_api_aurem_dev_scaffold__draft_id__get","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Draft Api Aurem Dev Scaffold  Draft Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Scaffold — Personal Track"],"summary":"Abandon Draft","description":"Explicitly abandon a draft (frees the TTL slot early).","operationId":"abandon_draft_api_aurem_dev_scaffold__draft_id__delete","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Abandon Draft Api Aurem Dev Scaffold  Draft Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/{draft_id}/regenerate":{"post":{"tags":["Scaffold — Personal Track"],"summary":"Regenerate Draft","description":"Regenerate the file tree with an optional brief refinement.\nOverwrites the existing draft's files. Keeps the same draft_id.","operationId":"regenerate_draft_api_aurem_dev_scaffold__draft_id__regenerate_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegenerateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Regenerate Draft Api Aurem Dev Scaffold  Draft Id  Regenerate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/{draft_id}/materialize":{"post":{"tags":["Scaffold — Personal Track"],"summary":"Materialize Draft","description":"Phase-2 entry point — create the real AUREM-owned GitHub repo,\npush the draft's files, register as a Personal Track project.\n\nFlow:\n  1. Load the draft (404 on wrong user / expired).\n  2. Guard: refuse to materialize a draft that's already been\n     materialized (idempotent — returns the existing repo URL).\n  3. `create_org_repo` on AUREM's GitHub org with a slug derived\n     from the brief.  Collision retry: on 422 we append `-N`.\n  4. `push_files_bulk` — pushes every file in the draft to the new\n     repo on the default branch.\n  5. On any partial-push failure, call `delete_org_repo` to unwind\n     so we never leave orphan half-empty repos in the org.\n  6. Register the project in `cto_projects` tagged\n     `personal_track=True` so downstream deploy/billing logic\n     knows this is a Personal Track project.\n  7. Mark the draft `status=\"materialized\"` + attach the repo info.","operationId":"materialize_draft_api_aurem_dev_scaffold__draft_id__materialize_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Materialize Draft Api Aurem Dev Scaffold  Draft Id  Materialize Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/{draft_id}/preview":{"post":{"tags":["Scaffold — Personal Track"],"summary":"Create Live Preview","description":"Spin up an E2B preview for react-fastapi drafts.\n\nJS-based stacks (nextjs-node, vue-express, plain-html) preview\nin-browser via Sandpack — they don't hit this endpoint at all.\nreact-fastapi (Python) needs a real interpreter → E2B.\n\nIdempotent per (draft_id): returns the existing live sandbox\nif one exists and hasn't expired.  Records the sandbox in\n`db.preview_sandboxes` so `sweep_expired_previews()` can\nclean it up on TTL expiry.","operationId":"create_live_preview_api_aurem_dev_scaffold__draft_id__preview_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Create Live Preview Api Aurem Dev Scaffold  Draft Id  Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/{project_id}/transfer-repo":{"post":{"tags":["Scaffold — Personal Track"],"summary":"Transfer Repo","description":"Transfer a materialized Personal Track repo from AUREM's org to\nthe user's own GitHub account.\n\nRequirements:\n  - Caller owns the project.\n  - Caller is on a tier with `transfer_ownership=True` (Starter+).\n  - `body.confirm=True` — transfer is a one-way action.\n\nGitHub transfers require the receiving account to accept the invite,\nso we return `transfer_pending=True` and flip\n`cto_projects.repo_transferred=True` as an audit marker.","operationId":"transfer_repo_api_aurem_dev_scaffold__project_id__transfer_repo_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRepoBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Transfer Repo Api Aurem Dev Scaffold  Project Id  Transfer Repo Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/quota/status":{"get":{"tags":["Scaffold — Personal Track"],"summary":"Quota Status","description":"Return the caller's current daily scaffold-drafts quota — used\nby the Build UI to show \"You have N drafts left today\" nudges.","operationId":"quota_status_api_aurem_dev_scaffold_quota_status_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":{"type":"object","title":"Response Quota Status Api Aurem Dev Scaffold Quota Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/{draft_id}/founder-override":{"post":{"tags":["Scaffold — Personal Track"],"summary":"Founder Override","description":"Force-approve a draft that was blocked by the security gate.\n\nFounder-only (checks `is_founder=True`).  Never mutates the\ndraft's files — only writes an override record that\n`materialize_draft` will check before re-running the gate.\nEvery override is audit-logged to `db.scaffold_scan_overrides`\nso we have a paper trail of every bypass, forever.\n\nRequires a `reason` string (min 8 chars) so we never have\nunexplained bypasses in the audit log.","operationId":"founder_override_api_aurem_dev_scaffold__draft_id__founder_override_post","parameters":[{"name":"draft_id","in":"path","required":true,"schema":{"type":"string","title":"Draft Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FounderOverrideBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Founder Override Api Aurem Dev Scaffold  Draft Id  Founder Override Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/admin/llm-health":{"get":{"tags":["Scaffold — Personal Track"],"summary":"Llm Health","description":"Canary probe that fires a tiny scaffold prompt through the\nParliament LLM path so the founder can see immediately post-deploy\nwhether real customised generation is firing or whether the\nendpoint is silently falling back to the heuristic.\n\nReturns:\n    {\n        ok:            bool,\n        llm_reachable: bool,       # True iff the LLM returned a parseable payload\n        file_count:    int,        # how many files the canary produced\n        model_used:    str | None,\n        fallback:      bool,       # True iff generate_scaffold_via_parliament returned None\n        elapsed_ms:    int,\n    }","operationId":"llm_health_api_aurem_dev_scaffold_admin_llm_health_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":{"type":"object","title":"Response Llm Health Api Aurem Dev Scaffold Admin Llm Health Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/admin/blocked-drafts":{"get":{"tags":["Scaffold — Personal Track"],"summary":"List Blocked Drafts","description":"List every draft the security gate blocked. Founder uses this\nto spot systemic false-positives and drives the override CTA.","operationId":"list_blocked_drafts_api_aurem_dev_scaffold_admin_blocked_drafts_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":{"type":"object","title":"Response List Blocked Drafts Api Aurem Dev Scaffold Admin Blocked Drafts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/admin/personal-projects":{"get":{"tags":["Scaffold — Personal Track"],"summary":"List Personal Projects","description":"Consolidated list of materialized Personal Track projects with\nlive-URL, deploy state, and Supabase-tier status.","operationId":"list_personal_projects_api_aurem_dev_scaffold_admin_personal_projects_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Personal Projects Api Aurem Dev Scaffold Admin Personal Projects Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/admin/draft-summary":{"get":{"tags":["Scaffold — Personal Track"],"summary":"Draft Summary","description":"Counts of drafts by status (draft, materialized, blocked_by_scan)\nfor the admin dashboard headline widget.","operationId":"draft_summary_api_aurem_dev_scaffold_admin_draft_summary_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":{"type":"object","title":"Response Draft Summary Api Aurem Dev Scaffold Admin Draft Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/admin/smoke-test":{"post":{"tags":["Scaffold — Personal Track"],"summary":"Run Infra Smoke Test","description":"Founder-only: run the full Personal Track infra pipeline with a\nthrowaway smoke project. Per-step pass/fail so a bad token points\nat exactly one step. See services/personal_track_smoke.py.","operationId":"run_infra_smoke_test_api_aurem_dev_scaffold_admin_smoke_test_post","parameters":[{"name":"cleanup","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Cleanup"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Run Infra Smoke Test Api Aurem Dev Scaffold Admin Smoke Test Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/scaffold/admin/revenue-snapshot":{"get":{"tags":["Scaffold — Personal Track"],"summary":"Revenue Snapshot","description":"MRR snapshot from dev_users tiers — first signal that billing\ngates work (a bug treating paid users as free shows up here).","operationId":"revenue_snapshot_api_aurem_dev_scaffold_admin_revenue_snapshot_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":{"type":"object","title":"Response Revenue Snapshot Api Aurem Dev Scaffold Admin Revenue Snapshot Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/visual-bugfix/upload":{"post":{"tags":["visual-bugfix"],"summary":"Upload Screenshot","operationId":"upload_screenshot_api_aurem_dev_visual_bugfix_upload_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_screenshot_api_aurem_dev_visual_bugfix_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/visual-bugfix/{report_id}/image":{"get":{"tags":["visual-bugfix"],"summary":"Get Screenshot","operationId":"get_screenshot_api_aurem_dev_visual_bugfix__report_id__image_get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"auth","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth"}},{"name":"variant","in":"query","required":false,"schema":{"type":"string","pattern":"^(before|after)$","default":"before","title":"Variant"}},{"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/aurem-dev/visual-bugfix/{report_id}/analyze":{"post":{"tags":["visual-bugfix"],"summary":"Analyze Screenshot Endpoint","operationId":"analyze_screenshot_endpoint_api_aurem_dev_visual_bugfix__report_id__analyze_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/visual-bugfix/{report_id}/generate-patch":{"post":{"tags":["visual-bugfix"],"summary":"Generate Patch Endpoint","description":"Phase 3 — one Gemini 3.1 Pro TEXT call (Cost Guard: on top of\nPhase 2's one vision call) that turns the vision analysis +\nranked candidate files into a minimal, syntax-checked fix.\n\"Refine Fix\" (Phase 4) re-enters here with `refine_instruction`.","operationId":"generate_patch_endpoint_api_aurem_dev_visual_bugfix__report_id__generate_patch_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/visual-bugfix/{report_id}/status":{"get":{"tags":["visual-bugfix"],"summary":"Get Status","description":"Lightweight poll endpoint for the background /preview job — a\nreal yarn/npm install can run past the ~60s external-proxy ceiling\nservices/local_tools.py's own search_repo docstring already\ndocuments for this pod, so /preview returns immediately and the\nfrontend polls here instead of holding one long request open.","operationId":"get_status_api_aurem_dev_visual_bugfix__report_id__status_get","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"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/aurem-dev/visual-bugfix/{report_id}/preview":{"post":{"tags":["visual-bugfix"],"summary":"Preview Endpoint","description":"Phase 3 — kicks off the isolated headless preview build as a\nbackground task and returns immediately (see /status for polling).\nFail-Safe Degradation: a failure here NEVER removes the\nalready-computed code diff from /generate-patch — the report\nsimply stays showable with status=preview_failed.","operationId":"preview_endpoint_api_aurem_dev_visual_bugfix__report_id__preview_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"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/aurem-dev/visual-bugfix/{report_id}/approve-pr":{"post":{"tags":["visual-bugfix"],"summary":"Approve Pr Endpoint","description":"Phase 4 — 'Approve & Create PR'. Opens a DRAFT PR (founder-\napproved default, 2026-09-12) on a fresh aurem/visual-bugfix-*\nbranch, reusing the EXISTING Loop Mode branch/commit/PR primitives\n(services.loop_safety + services.github_api_writer) — no new git\nlogic built. Never auto-merges — the user must click this\nexplicitly, and the PR itself stays a draft until THEY mark it\nready on GitHub.","operationId":"approve_pr_endpoint_api_aurem_dev_visual_bugfix__report_id__approve_pr_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"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/aurem-dev/visual-bugfix/{report_id}/discard":{"post":{"tags":["visual-bugfix"],"summary":"Discard Endpoint","description":"Phase 4 — 'Discard'. No GitHub side effects to undo (a branch\nis only ever created by /approve-pr, which the user must\nexplicitly click) — this just closes the workbench server-side.","operationId":"discard_endpoint_api_aurem_dev_visual_bugfix__report_id__discard_post","parameters":[{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}},{"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/aurem-dev/managed-db/{app_id}/{collection}/find":{"post":{"tags":["Managed DB — Personal Track"],"summary":"Find Docs","operationId":"find_docs_api_aurem_dev_managed_db__app_id___collection__find_post","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string","title":"Collection"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Find Docs Api Aurem Dev Managed Db  App Id   Collection  Find Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/managed-db/{app_id}/{collection}/find-one":{"post":{"tags":["Managed DB — Personal Track"],"summary":"Find One Doc","operationId":"find_one_doc_api_aurem_dev_managed_db__app_id___collection__find_one_post","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string","title":"Collection"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FindBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Find One Doc Api Aurem Dev Managed Db  App Id   Collection  Find One Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/managed-db/{app_id}/{collection}/insert":{"post":{"tags":["Managed DB — Personal Track"],"summary":"Insert Doc","operationId":"insert_doc_api_aurem_dev_managed_db__app_id___collection__insert_post","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string","title":"Collection"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsertBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Insert Doc Api Aurem Dev Managed Db  App Id   Collection  Insert Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/managed-db/{app_id}/{collection}/update":{"patch":{"tags":["Managed DB — Personal Track"],"summary":"Update Docs","operationId":"update_docs_api_aurem_dev_managed_db__app_id___collection__update_patch","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string","title":"Collection"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Update Docs Api Aurem Dev Managed Db  App Id   Collection  Update Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/managed-db/{app_id}/{collection}/{doc_id}":{"delete":{"tags":["Managed DB — Personal Track"],"summary":"Delete Doc","operationId":"delete_doc_api_aurem_dev_managed_db__app_id___collection___doc_id__delete","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"collection","in":"path","required":true,"schema":{"type":"string","title":"Collection"}},{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Doc Api Aurem Dev Managed Db  App Id   Collection   Doc Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/managed-db/{app_id}/quota":{"get":{"tags":["Managed DB — Personal Track"],"summary":"Get App Quota","operationId":"get_app_quota_api_aurem_dev_managed_db__app_id__quota_get","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get App Quota Api Aurem Dev Managed Db  App Id  Quota Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/supabase/{app_id}/provision":{"post":{"tags":["Supabase — Personal Track Paid Tier"],"summary":"Provision","description":"Kick off a dedicated Supabase Postgres for a paid Personal Track app.\n\nFlow:\n  1. Ownership check.\n  2. Refuse if already provisioned (idempotent — returns existing ref).\n  3. `create_project` on Supabase Management API (returns immediately).\n  4. Record the row in `supabase_projects` + register the monthly cost.\n  5. Schedule the schema+data migration as a background task so this\n     request stays fast — the client polls `/status` for progress.","operationId":"provision_api_aurem_dev_supabase__app_id__provision_post","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Provision Api Aurem Dev Supabase  App Id  Provision Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/supabase/{app_id}/status":{"get":{"tags":["Supabase — Personal Track Paid Tier"],"summary":"Status","description":"Return the provisioning + migration state. Safe to call\nrepeatedly — no side effects.","operationId":"status_api_aurem_dev_supabase__app_id__status_get","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Status Api Aurem Dev Supabase  App Id  Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/supabase/{app_id}/downgrade":{"post":{"tags":["Supabase — Personal Track Paid Tier"],"summary":"Downgrade","description":"Apply the configured downgrade policy for a paid → free move.\nFounder can override the env-configured policy via `body.policy`.","operationId":"downgrade_api_aurem_dev_supabase__app_id__downgrade_post","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DowngradeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Downgrade Api Aurem Dev Supabase  App Id  Downgrade Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/supabase/{app_id}":{"delete":{"tags":["Supabase — Personal Track Paid Tier"],"summary":"Destroy","description":"Immediately destroy the Supabase project. Skips the grace period\n— this is the \"founder unblock\" hatch, NOT the normal downgrade path.","operationId":"destroy_api_aurem_dev_supabase__app_id__delete","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Destroy Api Aurem Dev Supabase  App Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/supabase/{app_id}/transfer-to-user":{"post":{"tags":["Supabase — Personal Track Paid Tier"],"summary":"Transfer To User","description":"Transfer this dedicated Supabase project from AUREM's org to\nthe user's own Supabase organization.\n\nRequirements:\n  - Caller owns the app (personal_track project).\n  - Caller is on a tier with `transfer_ownership=True` (Starter+).\n  - `body.confirm=True` — front-end explicitly confirms this is\n    irreversible: AUREM will no longer bill or manage the project.\n  - `body.target_organization_id` is the user's Supabase org id.\n\nOn success:\n  - Supabase project moves to the target org.\n  - `cto_projects.storage_tier` flips back to `shared_mongo` (AUREM\n    won't route future data to a project we no longer control).\n  - `supabase_projects` row marked `transferred=True` for audit; NOT\n    deleted, so we retain the historical record.","operationId":"transfer_to_user_api_aurem_dev_supabase__app_id__transfer_to_user_post","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferSupabaseBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Transfer To User Api Aurem Dev Supabase  App Id  Transfer To User Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/supabase/admin/pending-downgrades":{"get":{"tags":["Supabase — Personal Track Paid Tier"],"summary":"List Pending Downgrades Endpoint","description":"Admin dashboard widget — returns every Supabase project in a\npending / escalated downgrade state, sorted by soonest grace_until.\nFounder uses this to intervene on rows the sweeper couldn't\nfinalise automatically.","operationId":"list_pending_downgrades_endpoint_api_aurem_dev_supabase_admin_pending_downgrades_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":{"type":"object","title":"Response List Pending Downgrades Endpoint Api Aurem Dev Supabase Admin Pending Downgrades Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/supabase/admin/sweep-now":{"post":{"tags":["Supabase — Personal Track Paid Tier"],"summary":"Sweep Now","description":"Founder-triggered manual sweep — bypasses the 24h cron cadence.\nSame code path as the background job. Idempotent.","operationId":"sweep_now_api_aurem_dev_supabase_admin_sweep_now_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":{"type":"object","title":"Response Sweep Now Api Aurem Dev Supabase Admin Sweep Now Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/supabase/admin/rearm/{app_id}":{"post":{"tags":["Supabase — Personal Track Paid Tier"],"summary":"Rearm Escalated","description":"Clear the `sweep_status=\"needs_founder\"` flag so the next sweep\npicks the row up again. Used after the founder has manually\nresolved whatever caused the escalation.","operationId":"rearm_escalated_api_aurem_dev_supabase_admin_rearm__app_id__post","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Rearm Escalated Api Aurem Dev Supabase Admin Rearm  App Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/personal-track/legacy-nudge-click":{"post":{"tags":["Personal Track — Activation"],"summary":"Legacy Nudge Click","description":"Record the first time a legacy user clicks the dashboard nudge.\n\nIdempotent via `$setOnInsert`-style logic: if the field already\nexists we don't overwrite it, so the returned `first_click` flag\ntells the frontend whether this was the first-ever click.","operationId":"legacy_nudge_click_api_aurem_dev_personal_track_legacy_nudge_click_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":{"type":"object","title":"Response Legacy Nudge Click Api Aurem Dev Personal Track Legacy Nudge Click Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/sessions":{"post":{"tags":["ORA Chat (admin)"],"summary":"Create Session","operationId":"create_session_api_aurem_dev_ora_chat_sessions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewSessionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["ORA Chat (admin)"],"summary":"List Sessions","operationId":"list_sessions_api_aurem_dev_ora_chat_sessions_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/aurem-dev/ora-chat/sessions/{session_id}":{"get":{"tags":["ORA Chat (admin)"],"summary":"Get Session","operationId":"get_session_api_aurem_dev_ora_chat_sessions__session_id__get","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}},{"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/aurem-dev/ora-chat/slash":{"post":{"tags":["ORA Chat (admin)"],"summary":"Run Slash","operationId":"run_slash_api_aurem_dev_ora_chat_slash_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-client-tz","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Client-Tz"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlashBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/message":{"post":{"tags":["ORA Chat (admin)"],"summary":"Send Message","operationId":"send_message_api_aurem_dev_ora_chat_message_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/action/approve":{"post":{"tags":["ORA Chat (admin)"],"summary":"Approve Action","operationId":"approve_action_api_aurem_dev_ora_chat_action_approve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveActionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/action/reject":{"post":{"tags":["ORA Chat (admin)"],"summary":"Reject Action","operationId":"reject_action_api_aurem_dev_ora_chat_action_reject_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectActionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/actions/recent":{"get":{"tags":["ORA Chat (admin)"],"summary":"List Recent Actions","operationId":"list_recent_actions_api_aurem_dev_ora_chat_actions_recent_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/aurem-dev/ora-chat/usage":{"get":{"tags":["ORA Chat (admin)"],"summary":"Usage","operationId":"usage_api_aurem_dev_ora_chat_usage_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/aurem-dev/ora-chat/config":{"get":{"tags":["ORA Chat (admin)"],"summary":"Config","operationId":"config_api_aurem_dev_ora_chat_config_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/aurem-dev/ora-chat/house-rules":{"get":{"tags":["ORA Chat (admin)"],"summary":"Get House Rules","operationId":"get_house_rules_api_aurem_dev_ora_chat_house_rules_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":["ORA Chat (admin)"],"summary":"Put House Rules","operationId":"put_house_rules_api_aurem_dev_ora_chat_house_rules_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HouseRulesBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/house-rules/history":{"get":{"tags":["ORA Chat (admin)"],"summary":"Get House Rules History","operationId":"get_house_rules_history_api_aurem_dev_ora_chat_house_rules_history_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/aurem-dev/ora-chat/house-rules/restore/{version}":{"post":{"tags":["ORA Chat (admin)"],"summary":"Restore House Rules","operationId":"restore_house_rules_api_aurem_dev_ora_chat_house_rules_restore__version__post","parameters":[{"name":"version","in":"path","required":true,"schema":{"type":"integer","title":"Version"}},{"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/aurem-dev/ora-chat/house-rules/reset":{"post":{"tags":["ORA Chat (admin)"],"summary":"Reset House Rules","operationId":"reset_house_rules_api_aurem_dev_ora_chat_house_rules_reset_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/aurem-dev/ora-chat/pin-login":{"post":{"tags":["ORA Chat (admin)"],"summary":"Pin Login","operationId":"pin_login_api_aurem_dev_ora_chat_pin_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PinLoginBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/pin/set":{"post":{"tags":["ORA Chat (admin)"],"summary":"Set Ora Pin","description":"R3 P1-1 — self-service personal /ora PIN. Requires a REAL\nauthenticated admin/founder session (normal login), not the /ora\nPIN itself — you must already be logged in the normal way once to\nopt into a personal quick-access PIN. Stored as a bcrypt hash,\nnever plaintext, on the caller's own `dev_users` row.","operationId":"set_ora_pin_api_aurem_dev_ora_chat_pin_set_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOraPinBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/pin/status":{"get":{"tags":["ORA Chat (admin)"],"summary":"Get Ora Pin Status","description":"Whether the caller already has a personal /ora PIN set.","operationId":"get_ora_pin_status_api_aurem_dev_ora_chat_pin_status_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/aurem-dev/ora-chat/hallucination-patterns":{"get":{"tags":["ORA Chat (admin)"],"summary":"Hallucination Patterns List","description":"List pending candidate rules for founder review.","operationId":"hallucination_patterns_list_api_aurem_dev_ora_chat_hallucination_patterns_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/aurem-dev/ora-chat/hallucination-patterns/classify-now":{"post":{"tags":["ORA Chat (admin)"],"summary":"Hallucination Patterns Classify","description":"Manual trigger — run the classifier over current unreviewed log rows.","operationId":"hallucination_patterns_classify_api_aurem_dev_ora_chat_hallucination_patterns_classify_now_post","parameters":[{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Force"}},{"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/aurem-dev/ora-chat/hallucination-patterns/approve":{"post":{"tags":["ORA Chat (admin)"],"summary":"Hallucination Patterns Approve","description":"Founder-approved promotion of a candidate pattern into house rules.","operationId":"hallucination_patterns_approve_api_aurem_dev_ora_chat_hallucination_patterns_approve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApprovePatternBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/hallucination-patterns/reject":{"post":{"tags":["ORA Chat (admin)"],"summary":"Hallucination Patterns Reject","description":"Reject a candidate pattern (won't ever be promoted).","operationId":"hallucination_patterns_reject_api_aurem_dev_ora_chat_hallucination_patterns_reject_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectPatternBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/canary/run-now":{"post":{"tags":["ORA Chat (admin)"],"summary":"Canary Run Now","description":"Fire the grounding canary in the background (same code the\nnightly cron runs — 5 LLM round-trips, too slow for the proxy).\nPoll GET /canary/runs for the report.","operationId":"canary_run_now_api_aurem_dev_ora_chat_canary_run_now_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/aurem-dev/ora-chat/canary/runs":{"get":{"tags":["ORA Chat (admin)"],"summary":"Canary Runs","description":"Recent canary run reports (newest first).","operationId":"canary_runs_api_aurem_dev_ora_chat_canary_runs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"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/aurem-dev/ora-chat/preview-scan":{"post":{"tags":["ORA Chat (admin)"],"summary":"Preview Scan","description":"Vanguard-gate the srcdoc preview render path.\n\nContract: returns `{ ok, renderable, safe, blockers, warnings }`.\n  - `renderable`: bool — lang is in the whitelist.\n  - `safe`:       bool — no CRITICAL findings.  When false, the\n                   frontend MUST refuse to build the srcdoc.\n  - `blockers`:   CRITICAL findings (list[dict], severity/name/line/snippet).\n  - `warnings`:   HIGH / MEDIUM findings — surfaced but non-blocking.","operationId":"preview_scan_api_aurem_dev_ora_chat_preview_scan_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewScanBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/intent-classify":{"post":{"tags":["ORA Chat (admin)"],"summary":"Intent Classify","description":"Two-layer intent classify (regex pre-filter → LLM fallback).\n\nReturns `{intent, source, matches, meta}`. `intent` is one of\n`PREVIEW_ONLY`, `CODE_CHANGE`, or `UNKNOWN`.  See\nservices/ora_chat/intent_router.py for the full contract.","operationId":"intent_classify_api_aurem_dev_ora_chat_intent_classify_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__ora_chat__IntentClassifyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/upload":{"post":{"tags":["ORA Chat (admin)"],"summary":"Ora Upload","description":"Upload + convert-to-markdown for the /ora chat composer.\n\nContract:\n  · Multipart file (10 MB max).\n  · Auth: admin JWT (same as the rest of /ora-chat).\n  · Tier gate: Pro / Team / Founder only.  Free / Starter get 402\n    with a JSON body the frontend renders as an upgrade nudge.\n  · Response: `{ok, kind: \"image\"|\"doc\", filename, content_type,\n                original_size, markdown, md_size, truncated}`\n    — mirrors /upload/convert exactly so the frontend attachment\n    pill uses one code path.","operationId":"ora_upload_api_aurem_dev_ora_chat_upload_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ora_upload_api_aurem_dev_ora_chat_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/image-generate":{"post":{"tags":["ORA Chat (admin)"],"summary":"Image Generate","operationId":"image_generate_api_aurem_dev_ora_chat_image_generate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/ora-chat/image-status":{"get":{"tags":["ORA Chat (admin)"],"summary":"Image Status","description":"Non-generating status peek so the frontend can badge remaining\nquota / daily spend without spending an image.","operationId":"image_status_api_aurem_dev_ora_chat_image_status_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/aurem-dev/github-deploy/connect":{"post":{"tags":["github-deploy"],"summary":"Connect","operationId":"connect_api_aurem_dev_github_deploy_connect_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__github_deploy__ConnectBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github-deploy/status":{"get":{"tags":["github-deploy"],"summary":"Status","operationId":"status_api_aurem_dev_github_deploy_status_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/aurem-dev/github-deploy/push-fix":{"post":{"tags":["github-deploy"],"summary":"Push Fix","operationId":"push_fix_api_aurem_dev_github_deploy_push_fix_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushFixBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github-deploy/pr-status":{"get":{"tags":["github-deploy"],"summary":"Pr Status","operationId":"pr_status_api_aurem_dev_github_deploy_pr_status_get","parameters":[{"name":"pr_number","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pr Number"}},{"name":"repo","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo"}},{"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/aurem-dev/github-deploy/install-workflow":{"post":{"tags":["github-deploy"],"summary":"Install Workflow","operationId":"install_workflow_api_aurem_dev_github_deploy_install_workflow_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstallWorkflowBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/github-deploy/report":{"post":{"tags":["github-deploy"],"summary":"Deploy Report","description":"Public-ish: authenticated by api_key in body, not JWT.\nCalled from the customer's GitHub Actions runner.\n\nIter 150 — replaced auto-Pydantic body binding with manual parsing so\n422s log WHICH field broke. Production logs were showing opaque 422s\nfrom upstream workflows sending mismatched schemas; now every reject\nleaves a breadcrumb so we can hand the caller a precise error and\naudit the bad payload.","operationId":"deploy_report_api_aurem_dev_github_deploy_report_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aurem-dev/thinking-hint":{"get":{"tags":["ThinkingHints"],"summary":"Get Thinking Hint","description":"Return a single hint matched to the caller's tier, or null.\n\nAlso returns the global `enabled` + `delay_ms` config so the\nfrontend can honour an admin kill-switch without a redeploy.","operationId":"get_thinking_hint_api_aurem_dev_thinking_hint_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/aurem-dev/admin/thinking-hints":{"get":{"tags":["ThinkingHints"],"summary":"Admin List Hints","operationId":"admin_list_hints_api_aurem_dev_admin_thinking_hints_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":["ThinkingHints"],"summary":"Admin Create Hint","operationId":"admin_create_hint_api_aurem_dev_admin_thinking_hints_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HintIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/thinking-hints/{hint_id}":{"put":{"tags":["ThinkingHints"],"summary":"Admin Update Hint","operationId":"admin_update_hint_api_aurem_dev_admin_thinking_hints__hint_id__put","parameters":[{"name":"hint_id","in":"path","required":true,"schema":{"type":"string","title":"Hint Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HintIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["ThinkingHints"],"summary":"Admin Delete Hint","operationId":"admin_delete_hint_api_aurem_dev_admin_thinking_hints__hint_id__delete","parameters":[{"name":"hint_id","in":"path","required":true,"schema":{"type":"string","title":"Hint Id"}},{"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/aurem-dev/admin/thinking-hints-config":{"get":{"tags":["ThinkingHints"],"summary":"Admin Get Config","operationId":"admin_get_config_api_aurem_dev_admin_thinking_hints_config_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":["ThinkingHints"],"summary":"Admin Set Config","operationId":"admin_set_config_api_aurem_dev_admin_thinking_hints_config_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HintsConfigIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/repos/{repo_id}/index":{"post":{"tags":["Repo Indexing"],"summary":"Index Repo","description":"Build (or rebuild) the CODEBASE.md index for the project whose\n`project_id == repo_id`. Returns the full index record on success\nor a 4xx with the `errors` list as `detail` when the project can't\nbe found or the analysis bailed.","operationId":"index_repo_api_aurem_dev_repos__repo_id__index_post","parameters":[{"name":"repo_id","in":"path","required":true,"schema":{"type":"string","title":"Repo Id"}},{"name":"commit","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Commit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Index Repo Api Aurem Dev Repos  Repo Id  Index Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/founder-offer/status":{"get":{"tags":["Founder Offer"],"summary":"Offer Status","description":"Public — returns the global counter so the UI can render the\n'X spots remaining' badge without auth.","operationId":"offer_status_api_aurem_dev_founder_offer_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Offer Status Api Aurem Dev Founder Offer Status Get"}}}}}}},"/api/aurem-dev/founder-offer/user-status":{"get":{"tags":["Founder Offer"],"summary":"Offer User Status","description":"Authenticated — per-user view used by the FounderOfferCard to\ndecide whether to render at all.","operationId":"offer_user_status_api_aurem_dev_founder_offer_user_status_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":{"type":"object","title":"Response Offer User Status Api Aurem Dev Founder Offer User Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/founder-offer/claim":{"post":{"tags":["Founder Offer"],"summary":"Claim Offer","description":"Reserve one of the 500 spots for `repo_id`, run the SEO fixer in\ndry-run mode, and return the preview for the user to confirm.","operationId":"claim_offer_api_aurem_dev_founder_offer_claim_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__founder_offer___ClaimBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Claim Offer Api Aurem Dev Founder Offer Claim Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/founder-offer/confirm":{"post":{"tags":["Founder Offer"],"summary":"Confirm Offer","description":"Promote a `preview` claim to a real commit run. Returns 200\nimmediately and runs the commit in the background.","operationId":"confirm_offer_api_aurem_dev_founder_offer_confirm_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ConfirmBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Confirm Offer Api Aurem Dev Founder Offer Confirm Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/founder-offer/cancel":{"post":{"tags":["Founder Offer"],"summary":"Cancel Offer","description":"Cancel a `preview` claim — restores one spot. No-op for any other\nfix_status because at that point a commit may already have landed.","operationId":"cancel_offer_api_aurem_dev_founder_offer_cancel_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_CancelBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Cancel Offer Api Aurem Dev Founder Offer Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/first-scan/status":{"get":{"tags":["Onboarding Step 4"],"summary":"Get First Scan Status","operationId":"get_first_scan_status_api_aurem_dev_onboarding_first_scan_status_get","parameters":[{"name":"project_id","in":"query","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get First Scan Status Api Aurem Dev Onboarding First Scan Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/first-scan/viewed":{"post":{"tags":["Onboarding Step 4"],"summary":"Mark First Scan Viewed","operationId":"mark_first_scan_viewed_api_aurem_dev_onboarding_first_scan_viewed_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ViewedBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Mark First Scan Viewed Api Aurem Dev Onboarding First Scan Viewed Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/first-scan/acknowledge-fix":{"post":{"tags":["Onboarding Step 4"],"summary":"Acknowledge First Scan Fix","description":"Marks the 'Fixed and shipped' banner as seen so it never\nre-renders on a future /status read (refresh, relogin, or a\ndifferent device) — same server-side-truth pattern as\nfindings_viewed_at above, applied to the fixed banner instead of\nthe findings card. Idempotent; a project with no commit yet is a\nno-op, not an error.","operationId":"acknowledge_first_scan_fix_api_aurem_dev_onboarding_first_scan_acknowledge_fix_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_AckFixBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Acknowledge First Scan Fix Api Aurem Dev Onboarding First Scan Acknowledge Fix Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/first-scan/apply":{"post":{"tags":["Onboarding Step 4"],"summary":"Apply First Scan Fixes","operationId":"apply_first_scan_fixes_api_aurem_dev_onboarding_first_scan_apply_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ApplyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Apply First Scan Fixes Api Aurem Dev Onboarding First Scan Apply Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/onboarding/send-connect-nudge":{"post":{"tags":["Onboarding"],"summary":"Send Connect Nudge","description":"Trigger the connect-repo nudge campaign. Admin/founder only.\n\n`dry_run=true` returns the would-be recipients and a preview of\nthe rendered body without calling Resend or writing to Mongo (no\naudit row, no email).","operationId":"send_connect_nudge_api_aurem_dev_admin_onboarding_send_connect_nudge_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_NudgeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Send Connect Nudge Api Aurem Dev Admin Onboarding Send Connect Nudge Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/click":{"get":{"tags":["Onboarding"],"summary":"Onboarding Click","description":"Public 302 — logs the click and redirects to the dashboard.\n\nAlways returns a redirect, even when `uid` is missing or the\naudit row can't be located, so a malformed link still drops the\nuser on the right page rather than showing an error.\n\n2026-08-20 — `stage` is optional and used by the newer\n`funnel_stage_nudge` campaign (services/funnel_nudge_cron.py) so\na click attributes to the exact stage email that was sent (a user\ncan receive several different stage nudges over their lifetime,\nunlike the old campaign's single t24/t72 pair). It also decides\nthe redirect target: the two GitHub-related stages reopen the\nconnect-repo wizard; `stage3_no_chat` users already have a\nproject, so they land on the plain dashboard instead.","operationId":"onboarding_click_api_aurem_dev_onboarding_click_get","parameters":[{"name":"uid","in":"query","required":false,"schema":{"type":"string","default":"","title":"Uid"}},{"name":"c","in":"query","required":false,"schema":{"type":"string","default":"connect_repo_nudge","title":"C"}},{"name":"stage","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/repo-connect-gate/state":{"get":{"tags":["Onboarding"],"summary":"Repo Connect Gate State","description":"One round-trip for the frontend's gate decision: has this user\nalready skipped (Case B) or already connected a repo (Case A)?\nIf neither, the gate must show on this chat load.","operationId":"repo_connect_gate_state_api_aurem_dev_onboarding_repo_connect_gate_state_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":{"type":"object","title":"Response Repo Connect Gate State Api Aurem Dev Onboarding Repo Connect Gate State Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/repo-connect-gate/shown":{"post":{"tags":["Onboarding"],"summary":"Repo Connect Gate Shown","operationId":"repo_connect_gate_shown_api_aurem_dev_onboarding_repo_connect_gate_shown_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":{"type":"object","title":"Response Repo Connect Gate Shown Api Aurem Dev Onboarding Repo Connect Gate Shown Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/repo-connect-gate/skip":{"post":{"tags":["Onboarding"],"summary":"Repo Connect Gate Skip","description":"Explicit \"Skip for now\" click on the mandatory gate (Case B).\nIdempotent: only flips the flag + emits the funnel event the\nFIRST time — the gate never shows again once skipped, so a\nsecond skip call shouldn't normally happen, but a stray retry\nmust not double-log.","operationId":"repo_connect_gate_skip_api_aurem_dev_onboarding_repo_connect_gate_skip_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":{"type":"object","title":"Response Repo Connect Gate Skip Api Aurem Dev Onboarding Repo Connect Gate Skip Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/repo-connect-gate/completed":{"post":{"tags":["Onboarding"],"summary":"Repo Connect Gate Completed","description":"Fired by the gate-mode wizard right after a successful connect\n(Case A). Pure funnel-measurement signal — the gate stops showing\non its own once `has_project` is true; this event is what tells\nus it was specifically THIS screen that got them there.","operationId":"repo_connect_gate_completed_api_aurem_dev_onboarding_repo_connect_gate_completed_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_GateCompletedBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Repo Connect Gate Completed Api Aurem Dev Onboarding Repo Connect Gate Completed Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/nudge/shown":{"post":{"tags":["Onboarding"],"summary":"Engagement Nudge Shown","description":"Part 2 — a nudge just rendered in-chat. Records it as the\n'pending' nudge so the next real task message can be attributed\nto it (post_scan_nudge_task_sent). For the post-skip variant,\nalso enforces the hard lifetime cap of 3 server-side (frontend\ncaps too, but the server is the source of truth).","operationId":"engagement_nudge_shown_api_aurem_dev_onboarding_nudge_shown_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_NudgeShownBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Engagement Nudge Shown Api Aurem Dev Onboarding Nudge Shown Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/onboarding/nudge/post-scan-state":{"get":{"tags":["Onboarding"],"summary":"Post Scan Nudge State","description":"Part 2 trigger condition 2: connected + ran a scan or opened\nthe graph, but zero real task messages sent since. `prefill_task`\npulls the real scan's `top_category`; if that's missing for any\nreason, ships the exact named fallback task — never a blank or\ngeneric placeholder. Frontend wraps it as `Try: '{prefill_task}'`\nfor display and uses it verbatim to prefill the chat composer.","operationId":"post_scan_nudge_state_api_aurem_dev_onboarding_nudge_post_scan_state_get","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Post Scan Nudge State Api Aurem Dev Onboarding Nudge Post Scan State Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/promo/first50/status":{"get":{"tags":["Promo First50"],"summary":"First50 Status","description":"Public — real-time counter for the landing badge.","operationId":"first50_status_api_aurem_dev_promo_first50_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response First50 Status Api Aurem Dev Promo First50 Status Get"}}}}}}},"/api/aurem-dev/auth/verify":{"get":{"tags":["Promo First50"],"summary":"Verify Email","description":"Single-use email verification. 302-redirects to the frontend\nsuccess/error page. NEVER echoes the token back to the client.","operationId":"verify_email_api_aurem_dev_auth_verify_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/auth/resend-verification":{"post":{"tags":["Promo First50"],"summary":"Resend Verification","description":"Authenticated user asks for a fresh verification link.\nCooldown: 1 resend per 15 min per user. Silent no-op for already\nverified users (returns ok=True so we don't leak account state).","operationId":"resend_verification_api_aurem_dev_auth_resend_verification_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":{"type":"object","title":"Response Resend Verification Api Aurem Dev Auth Resend Verification Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/promo/first50/waitlist":{"post":{"tags":["Promo First50"],"summary":"First50 Waitlist","description":"Public — capture email when the promo is sold out. Idempotent,\ndisposable-blocked, per-IP rate-limited. Never leaks whether an\nemail is already on the list (prevents enumeration).","operationId":"first50_waitlist_api_aurem_dev_promo_first50_waitlist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_WaitlistBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response First50 Waitlist Api Aurem Dev Promo First50 Waitlist Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/unsubscribe":{"get":{"tags":["Email unsubscribe"],"summary":"Unsubscribe","description":"One-click unsubscribe. Idempotent.","operationId":"unsubscribe_api_aurem_dev_unsubscribe_get","parameters":[{"name":"t","in":"query","required":false,"schema":{"type":"string","default":"","title":"T"}},{"name":"e","in":"query","required":false,"schema":{"type":"string","default":"","title":"E"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/first50-campaign/preview":{"get":{"tags":["Admin First-50 campaign"],"summary":"Preview","description":"Dry-run: return the exact user list + skip reasons for a stage.","operationId":"preview_api_aurem_dev_admin_first50_campaign_preview_get","parameters":[{"name":"stage","in":"query","required":true,"schema":{"type":"integer","title":"Stage"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":500,"title":"Limit"}},{"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/aurem-dev/admin/first50-campaign/render":{"get":{"tags":["Admin First-50 campaign"],"summary":"Render Email","description":"Render the exact HTML that would be sent to `user_id` at `stage`.\nUsed for founder-review before real send.","operationId":"render_email_api_aurem_dev_admin_first50_campaign_render_get","parameters":[{"name":"stage","in":"query","required":true,"schema":{"type":"integer","title":"Stage"}},{"name":"user_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"User Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/first50-campaign/dispatch":{"post":{"tags":["Admin First-50 campaign"],"summary":"Dispatch","description":"Actually send stage N.\n\nTwo modes:\n  1) Normal (default): send to up to `limit` eligible users from DB filter.\n  2) Override: if `to_emails=a@x.com,b@y.com` is passed, bypass DB\n     filtering entirely and forcibly send stage N to those exact\n     recipients. Skips ALL stop-conditions (unsub / already_sent /\n     task_created) and does NOT record to first50_campaign_state,\n     so it's safe for founder inbox review without polluting prod\n     campaign state. Uses the real dev_users row for personalization\n     when the email exists in DB; falls back to a synthetic user dict\n     otherwise.\n\nDefaults to dry_run=true (safety). Set dry_run=false to actually send.","operationId":"dispatch_api_aurem_dev_admin_first50_campaign_dispatch_post","parameters":[{"name":"stage","in":"query","required":true,"schema":{"type":"integer","title":"Stage"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Limit"}},{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Dry Run"}},{"name":"to_emails","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Emails"}},{"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/aurem-dev/admin/first50-campaign/state":{"get":{"tags":["Admin First-50 campaign"],"summary":"Campaign State","description":"Aggregate stats on the campaign so far.","operationId":"campaign_state_api_aurem_dev_admin_first50_campaign_state_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/aurem-dev/admin/first50-campaign/second-list":{"get":{"tags":["Admin First-50 campaign"],"summary":"Second List","description":"Founder Q2 from the brief: users who ARE verified but never got the\npromo (verified before it launched OR after it sold out). Returned as a\nplain list so founder can decide manually per-user.","operationId":"second_list_api_aurem_dev_admin_first50_campaign_second_list_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/aurem-dev/admin/vanguard/config":{"get":{"tags":["Admin / Vanguard"],"summary":"Read Vanguard Config","operationId":"read_vanguard_config_api_aurem_dev_admin_vanguard_config_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":{"type":"object","title":"Response Read Vanguard Config Api Aurem Dev Admin Vanguard Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Admin / Vanguard"],"summary":"Write Vanguard Config","operationId":"write_vanguard_config_api_aurem_dev_admin_vanguard_config_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ConfigBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Write Vanguard Config Api Aurem Dev Admin Vanguard Config Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/bin/{bin_id}/projects":{"get":{"tags":["Admin / Rebuild"],"summary":"Bin Tracker Projects","description":"List all projects for a BIN with live PAT validity + last activity.","operationId":"bin_tracker_projects_api_aurem_dev_admin_bin__bin_id__projects_get","parameters":[{"name":"bin_id","in":"path","required":true,"schema":{"type":"string","title":"Bin Id"}},{"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/aurem-dev/admin/users/{bin_id}/tier":{"post":{"tags":["Admin / Rebuild"],"summary":"Change User Tier","description":"Change a user's subscription tier.","operationId":"change_user_tier_api_aurem_dev_admin_users__bin_id__tier_post","parameters":[{"name":"bin_id","in":"path","required":true,"schema":{"type":"string","title":"Bin Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TierChangeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/github/connections":{"get":{"tags":["Admin / Rebuild"],"summary":"Github Connections","description":"Cross-user table of GitHub-App-connected projects, grouped by\ninstallation_id, for the bulk-revoke tool. Read-only, live-probes\npat_status the same way BIN Tracker does (services.pat_vault.\nprobe_pat_status) so the numbers here always match what an admin\nwould see per-user in Section 1.\n\nRow classification:\n  revokable — pat_status != \"valid\" (the ONLY ones eligible for\n              the destructive revoke action)\n  idle      — pat_status == \"valid\" AND task_count == 0 (working\n              but unused — flag-for-re-engage candidate, NEVER\n              revoked by this tool)\n  active    — pat_status == \"valid\" AND task_count > 0","operationId":"github_connections_api_aurem_dev_admin_github_connections_get","parameters":[{"name":"view","in":"query","required":false,"schema":{"type":"string","default":"revokable","title":"View"}},{"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/aurem-dev/admin/github/bulk-revoke":{"post":{"tags":["Admin / Rebuild"],"summary":"Github Bulk Revoke","description":"Force-uninstall the GitHub App for the given installations —\nreal GitHub call first, DB sync only on success/already-gone.\n`dry_run=true` returns the blast-radius preview (email/repo/\npat_status per row) and makes ZERO GitHub calls / DB writes.","operationId":"github_bulk_revoke_api_aurem_dev_admin_github_bulk_revoke_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubBulkRevokeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/github/flag-idle":{"post":{"tags":["Admin / Rebuild"],"summary":"Github Flag Idle","description":"Non-destructive: flags idle-but-working connections for a\nre-engage follow-up. Makes ZERO GitHub calls and revokes nothing —\nthis is the safe action for the 27-of-28 case.","operationId":"github_flag_idle_api_aurem_dev_admin_github_flag_idle_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GithubFlagIdleBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/audit/actions":{"get":{"tags":["Admin / Rebuild"],"summary":"Admin Audit Actions","description":"Admin ACTION audit (bulk-revoke, flag-idle, etc.) from\n`db.admin_audit` — distinct from GET /admin/audit (routers/\nadmin_analytics.py), which reads `ora_audit` for per-turn ORA\nchat audit. Both surface on the same `/admin/audit` page (see\nAdminAuditPage.jsx's \"Admin actions\" tab) since they're both\nconceptually \"the audit log an admin looks at\", even though\nthey're two unrelated collections with unrelated shapes.\nAdded 2026-09-07 so bulk-revoke's audit_row write (which already\nexisted) is actually visible somewhere in the UI.","operationId":"admin_audit_actions_api_aurem_dev_admin_audit_actions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"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/aurem-dev/admin/feature-flags/{flag}/user-override":{"post":{"tags":["Admin / Rebuild"],"summary":"Flag User Override Set","description":"Set a per-user override for a feature flag.","operationId":"flag_user_override_set_api_aurem_dev_admin_feature_flags__flag__user_override_post","parameters":[{"name":"flag","in":"path","required":true,"schema":{"type":"string","title":"Flag"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOverrideBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/feature-flags/{flag}/user-override/{bin_id}":{"delete":{"tags":["Admin / Rebuild"],"summary":"Flag User Override Remove","description":"Remove a per-user override for a feature flag.","operationId":"flag_user_override_remove_api_aurem_dev_admin_feature_flags__flag__user_override__bin_id__delete","parameters":[{"name":"flag","in":"path","required":true,"schema":{"type":"string","title":"Flag"}},{"name":"bin_id","in":"path","required":true,"schema":{"type":"string","title":"Bin Id"}},{"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/aurem-dev/admin/llm-credits":{"get":{"tags":["Admin / Rebuild"],"summary":"Llm Credits","description":"Consolidated view: OpenRouter balance + provider status + circuit\nbreaker state + LongCat live flag + linters missing.","operationId":"llm_credits_api_aurem_dev_admin_llm_credits_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/aurem-dev/admin/llm-credit-alert":{"post":{"tags":["Admin / Rebuild"],"summary":"Llm Credit Alert Set","description":"Persist the alert threshold that a background job compares against.","operationId":"llm_credit_alert_set_api_aurem_dev_admin_llm_credit_alert_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditAlertBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/parliament/live":{"get":{"tags":["Admin / Rebuild"],"summary":"Parliament Live","description":"Per-council live state — model in use + call counts + LongCat flag.","operationId":"parliament_live_api_aurem_dev_admin_parliament_live_get","parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Window Hours"}},{"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/aurem-dev/admin/boundary-probes":{"get":{"tags":["Admin / Rebuild"],"summary":"Boundary Probes","description":"Count of ORA boundary violations in the window.  Reads from\nadmin_audit / audit_log entries with error_class=ora_boundary_violation\nOR from the in-memory counter.","operationId":"boundary_probes_api_aurem_dev_admin_boundary_probes_get","parameters":[{"name":"window_hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Window Hours"}},{"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/aurem-dev/security-scan/run":{"post":{"tags":["Security Scan"],"summary":"Run Security Scan","description":"One-click static scanner.\n\nBody shape (all optional except project_id):\n  • project_id  — str   — required, the connected repo we scan\n  • two_round   — bool  — Iter 212m-66: opt into deep two-round\n                          Vanguard scan (R1 surface + R2 deep w/\n                          ±10-line context + chain detection).\n                          Default False → legacy single-pass.\n  • auto_pr     — bool  — Iter 212m-66: when True AND the report\n                          contains at least one `pr_ready` fix\n                          AND the project has a valid GitHub PAT,\n                          open a DRAFT pull-request listing every\n                          fix.  Never force-merges.\n\nReturns: {\"ok\": True, \"summary\": {…counts…}, \"findings\": [...]}.\nNo auto-apply — caller renders + asks the user to fix manually.\n\nIter 212m-158 — Admin/founder gate.  Non-admin callers get a\nclean 403 here instead of leaking the scan UX through.  Matches\nthe frontend route guards shipped in iter 212m-157.","operationId":"run_security_scan_api_aurem_dev_security_scan_run_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Run Security Scan Api Aurem Dev Security Scan Run Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/security-scan/fix":{"post":{"tags":["Security Scan"],"summary":"Apply Security Fix","description":"Apply a REAL fix for a single Vanguard finding.\n\nIter 212m-190 — task-quota model: Vanguard fixes available from\nStarter tier up, 1 task per successful fix, no token pricing.","operationId":"apply_security_fix_api_aurem_dev_security_scan_fix_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Apply Security Fix Api Aurem Dev Security Scan Fix Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/vanguard/ci-findings":{"post":{"tags":["Vanguard CI"],"summary":"Ingest Ci Findings","description":"Ingest a single CI scan run.\n\nBody shape:\n  • repo        — str  required (e.g. \"aurem-ai/aurem-cto\")\n  • commit      — str  required (40-char git SHA)\n  • branch      — str  optional (defaults to \"\")\n  • scanner     — str  required (\"trufflehog\" for Phase 1)\n  • findings    — list raw scanner output (jsonl rows)\n  • run_url     — str  optional (link back to the GH Actions run)\n  • triggered_by — str optional (github actor / \"push\" / \"pr\")\n\nReturns:\n  { ok, stored, verified_count, total_count, run_id }","operationId":"ingest_ci_findings_api_aurem_dev_vanguard_ci_findings_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Ingest Ci Findings Api Aurem Dev Vanguard Ci Findings Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Vanguard CI"],"summary":"List Ci Findings","description":"Authenticated dashboard read.  Lists the latest scan runs (one\nper commit per scanner) for the calling user's repos.  Always\nuses the user JWT, never the CI token.","operationId":"list_ci_findings_api_aurem_dev_vanguard_ci_findings_get","parameters":[{"name":"repo","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List Ci Findings Api Aurem Dev Vanguard Ci Findings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/vanguard/ci-ingest-status":{"get":{"tags":["Vanguard CI"],"summary":"Ci Ingest Status","description":"Admin/founder-only. Reports whether the CI ingest pipeline is\nconfigured + ready.\n\nReturns:\n  ready:      bool  — token set AND >=1 run ingested ever\n  token_set:  bool  — AUREM_CI_INGEST_TOKEN configured on the backend\n  run_count:  int   — total runs in vanguard_ci_findings (admin view)\n  last_run:   dict|None — most-recent run summary, if any\n  setup_steps: list of strings — actionable next steps when not ready","operationId":"ci_ingest_status_api_aurem_dev_vanguard_ci_ingest_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Ci Ingest Status Api Aurem Dev Vanguard Ci Ingest Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/fix-pipeline/preview":{"post":{"tags":["Fix Pipeline"],"summary":"Preview Cost","description":"Cheap, no-side-effect cost preview for the bulk-fix confirm\nmodal.  Returns total tokens + estimated USD + the caller's\ncurrent balance + an `is_unlimited` flag the UI uses to swap the\npayment line for an `⚡ Founder — FREE` chip.","operationId":"preview_cost_api_aurem_dev_fix_pipeline_preview_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Preview Cost Api Aurem Dev Fix Pipeline Preview Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/fix-pipeline/quota":{"get":{"tags":["Fix Pipeline"],"summary":"Fix Quota","description":"Iter 212m-190 — task-quota snapshot for the fix UI. The frontend\nuses `fix_tools` to show/hide per-finding Fix buttons and\n`bulk_fix` to show/hide the bulk button (Team tier only).","operationId":"fix_quota_api_aurem_dev_fix_pipeline_quota_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":{"type":"object","title":"Response Fix Quota Api Aurem Dev Fix Pipeline Quota Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/fix-pipeline/bulk":{"post":{"tags":["Fix Pipeline"],"summary":"Start Bulk Fix","description":"Kick off a sequential bulk fix.  The HTTP response returns\nimmediately with `{job_id}`; the client opens an SSE connection\nto `/fix-pipeline/stream/{job_id}` to watch progress.","operationId":"start_bulk_fix_api_aurem_dev_fix_pipeline_bulk_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Start Bulk Fix Api Aurem Dev Fix Pipeline Bulk Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/fix-pipeline/stream/{job_id}":{"get":{"tags":["Fix Pipeline"],"summary":"Stream Fix","description":"Server-Sent Events.  Re-auth via the standard JWT; rejects\ncross-tenant subscriptions so one user can't tail another's\nfix job.\n\nAuth fallback: browsers cannot set Authorization headers on an\nEventSource, so we also accept `?token=...` in the query string.\nSame JWT, same validation path — just a different transport.\n\nIter 212m-128 — Mongo hydration. If the job is no longer in\nmemory (pod restart, multi-pod miss) but its row exists in\n`fix_jobs`, we replay its terminal snapshot as a `hydrated`\nevent so the drawer can render the partial results AND a\nRestart button instead of a blank \"gone\" screen.","operationId":"stream_fix_api_aurem_dev_fix_pipeline_stream__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token"}},{"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/aurem-dev/fix-pipeline/summary/{job_id}":{"get":{"tags":["Fix Pipeline"],"summary":"Get Job Summary","operationId":"get_job_summary_api_aurem_dev_fix_pipeline_summary__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Job Summary Api Aurem Dev Fix Pipeline Summary  Job Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/fix-pipeline/verify-commit":{"get":{"tags":["Fix Pipeline"],"summary":"Retry Verify Commit","description":"The commit-exists check can itself fail (rate limit, network)\nindependent of whether the fix succeeded. This lets the UI ask\n\"check again\" without re-running the whole fix.","operationId":"retry_verify_commit_api_aurem_dev_fix_pipeline_verify_commit_get","parameters":[{"name":"job_id","in":"query","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"finding_id","in":"query","required":true,"schema":{"type":"string","title":"Finding Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Retry Verify Commit Api Aurem Dev Fix Pipeline Verify Commit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/fix-pipeline/list":{"get":{"tags":["Fix Pipeline"],"summary":"List User Jobs","description":"Returns the caller's recent fix jobs (newest first).  Used by\nthe Dashboard \"Resume in-flight fix\" banner + the FixProgressDrawer\nre-attach logic on page reload.","operationId":"list_user_jobs_api_aurem_dev_fix_pipeline_list_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response List User Jobs Api Aurem Dev Fix Pipeline List Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/fix-pipeline/restart/{job_id}":{"post":{"tags":["Fix Pipeline"],"summary":"Restart Job","description":"Spin a fresh worker on the findings that were NOT yet\ncompleted by the original job.  Returns a NEW job_id (with a\nclean event stream) — the old row stays in Mongo as historical\naudit.\n\nRules:\n  • Job must be `orphaned`, `failed`, or `running` (the latter\n    covers the case where a different pod's worker is *thought*\n    to still be running but the user has lost faith).\n  • The caller must own the job.\n  • If every finding was already completed, returns 200 with\n    `{nothing_to_do: true}` instead of starting an empty worker.","operationId":"restart_job_api_aurem_dev_fix_pipeline_restart__job_id__post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Restart Job Api Aurem Dev Fix Pipeline Restart  Job Id  Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/connection-status":{"get":{"tags":["Repo Status"],"summary":"Connection Status","description":"Batched live check of every project's GitHub connectivity.\n\nThe endpoint:\n  1. Loads the caller's project rows.\n  2. For each row, picks the freshest auth token:\n     PAT → user's OAuth token → no auth at all.\n  3. Fan-outs `GET /repos/{owner}/{repo}` calls in parallel\n     (capped at _MAX_PARALLEL) with a 5 s timeout each.\n  4. Returns a flat array the sidebar maps to dots.\n\nA tiny TTL cache (_CACHE_TTL_S = 8 s) coalesces duplicate polls\nwhile the user is bouncing between routes.","operationId":"connection_status_api_aurem_dev_cto_projects_connection_status_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Connection Status Api Aurem Dev Cto Projects Connection Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/cleanup-summary":{"get":{"tags":["Repo Status"],"summary":"Cleanup Summary","description":"Return projects with persistent connection failures so the\ndashboard banner can offer a one-click bulk-cleanup path.\n\nUses the same connection-status pipeline as the sidebar so the\n\"broken\" set is always fresh and consistent with the red dots.","operationId":"cleanup_summary_api_aurem_dev_cto_projects_cleanup_summary_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Cleanup Summary Api Aurem Dev Cto Projects Cleanup Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/cto/projects/cleanup-delete":{"post":{"tags":["Repo Status"],"summary":"Cleanup Delete","description":"Bulk-delete the caller's broken projects after re-verifying each\nis still broken (defence against a stale UI submitting a working\nproject_id by mistake).\n\nReturns count of rows deleted + an audit_id stamped into the\n`repo_cleanup_audit` collection for traceability.","operationId":"cleanup_delete_api_aurem_dev_cto_projects_cleanup_delete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Cleanup Delete Api Aurem Dev Cto Projects Cleanup Delete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/codebase-health/cache-stats":{"get":{"tags":["Codebase Health"],"summary":"Cache Stats","description":"Iter 212m-79 — surface Redis scan-cache hit-rate to founders.\nIter 212m-158 — was a custom is_admin check; now routed through\nthe shared `require_admin` helper for consistency.","operationId":"cache_stats_api_aurem_dev_codebase_health_cache_stats_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":{"type":"object","title":"Response Cache Stats Api Aurem Dev Codebase Health Cache Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/codebase-health/scan":{"post":{"tags":["Codebase Health"],"summary":"Scan","operationId":"scan_api_aurem_dev_codebase_health_scan_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Scan Api Aurem Dev Codebase Health Scan Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/codebase-health/last":{"get":{"tags":["Codebase Health"],"summary":"Last Scan","operationId":"last_scan_api_aurem_dev_codebase_health_last_get","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Last Scan Api Aurem Dev Codebase Health Last Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/codebase-health/fix":{"post":{"tags":["Codebase Health"],"summary":"Request Fix","operationId":"request_fix_api_aurem_dev_codebase_health_fix_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Request Fix Api Aurem Dev Codebase Health Fix Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/codebase-health/scanner-feedback":{"get":{"tags":["Codebase Health"],"summary":"Scanner Feedback","description":"Aggregate false-positive feedback so a human can identify rules\nthat need tuning.  Founder-only.\n\nReturns:\n    {\n        \"window_days\": int,\n        \"total_fps\":   int,\n        \"by_rule\":     [{\"rule_id\", \"count\", \"example_files\"}],\n        \"by_file\":     [{\"file\", \"count\", \"top_rule\"}],\n        \"trend_daily\": [{\"date\", \"count\"}],\n        \"recent\":      [{finding + meta}, ...],\n    }","operationId":"scanner_feedback_api_aurem_dev_codebase_health_scanner_feedback_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Scanner Feedback Api Aurem Dev Codebase Health Scanner Feedback Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/findings/backlog":{"get":{"tags":["Findings Backlog"],"summary":"Backlog List","operationId":"backlog_list_api_aurem_dev_findings_backlog_get","parameters":[{"name":"project_id","in":"query","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ids"}},{"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/aurem-dev/findings/starter-suggestions":{"get":{"tags":["Findings Backlog"],"summary":"Starter Suggestions","description":"Real (personalized) + generic example prompts for the empty-chat\nPrompt Starter panel. Real findings first, generic ones pad the\nrest so the frontend always has a pool to rotate/swap from.","operationId":"starter_suggestions_api_aurem_dev_findings_starter_suggestions_get","parameters":[{"name":"project_id","in":"query","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":12,"title":"Limit"}},{"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/aurem-dev/findings/expose-batch":{"post":{"tags":["Findings Backlog"],"summary":"Expose Batch","operationId":"expose_batch_api_aurem_dev_findings_expose_batch_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExposeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/findings/dismiss":{"post":{"tags":["Findings Backlog"],"summary":"Dismiss Batch","operationId":"dismiss_batch_api_aurem_dev_findings_dismiss_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DismissBatchBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/findings/snooze":{"post":{"tags":["Findings Backlog"],"summary":"Snooze One","operationId":"snooze_one_api_aurem_dev_findings_snooze_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnoozeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/findings/resolve":{"post":{"tags":["Findings Backlog"],"summary":"Resolve One","operationId":"resolve_one_api_aurem_dev_findings_resolve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/suggestions":{"post":{"tags":["Founder Suggestions"],"summary":"Submit Suggestion","description":"Submit a suggestion for the founder. Rate-limited to one per\nUTC day per user_id.","operationId":"submit_suggestion_api_aurem_dev_suggestions_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/suggestions/admin/list":{"get":{"tags":["Founder Suggestions"],"summary":"List Suggestions Admin","description":"Admin listing for the Suggestions panel. `status` filters on\n`admin_decision` (`pending|approved|rejected`); `sort=recent`\nreturns newest first.","operationId":"list_suggestions_admin_api_aurem_dev_suggestions_admin_list_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"recent","title":"Sort"}},{"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/aurem-dev/suggestions/admin/{sid}/decide":{"post":{"tags":["Founder Suggestions"],"summary":"Decide Suggestion","description":"Approve or reject a suggestion. Records `decided_by` as the\ncalling admin's user_id for an audit trail.","operationId":"decide_suggestion_api_aurem_dev_suggestions_admin__sid__decide_post","parameters":[{"name":"sid","in":"path","required":true,"schema":{"type":"string","title":"Sid"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/admin/self-bugs/list":{"get":{"tags":["Admin — Self-Repair"],"summary":"List Self Bugs","description":"Read-only listing, sorted by recurrence (times_seen) desc so\nthe \"this keeps happening\" bugs bubble to the top — the whole\npoint of P7's learned-recurrence counter. `type` optionally\nfilters to one of SELF_BUG_TYPES.","operationId":"list_self_bugs_api_aurem_dev_admin_self_bugs_list_get","parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"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/aurem-dev/admin/connect-diagnostic/{user_id}":{"get":{"tags":["Admin — Connect Flow"],"summary":"Connect Flow Diagnostic","operationId":"connect_flow_diagnostic_api_aurem_dev_admin_connect_diagnostic__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"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/aurem-dev/admin/onboarding-funnel/summary":{"get":{"tags":["Admin — Onboarding Funnel"],"summary":"Onboarding Funnel Summary","description":"Aggregate count per stage, in natural funnel order, so the\nfounder sees at a glance where the biggest pile-up is.","operationId":"onboarding_funnel_summary_api_aurem_dev_admin_onboarding_funnel_summary_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/aurem-dev/admin/onboarding-funnel/preview-email":{"get":{"tags":["Admin — Onboarding Funnel"],"summary":"Onboarding Funnel Preview Email","description":"Render the exact nudge email a stuck user in this stage would\nreceive — READ-ONLY, mints no real magic-login token, sends\nnothing. Uses the most-stuck real user in the stage as the\ntemplate (falls back to a placeholder if the stage is empty).","operationId":"onboarding_funnel_preview_email_api_aurem_dev_admin_onboarding_funnel_preview_email_get","parameters":[{"name":"stage","in":"query","required":true,"schema":{"type":"string","description":"One of: stage3_no_chat, stage2_project_pending, stage1_github_started, stage4_fully_inactive","title":"Stage"},"description":"One of: stage3_no_chat, stage2_project_pending, stage1_github_started, stage4_fully_inactive"},{"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/aurem-dev/admin/onboarding-funnel/trend":{"get":{"tags":["Admin — Onboarding Funnel"],"summary":"Onboarding Funnel Trend","description":"Daily snapshot history for the trend line. Returns whatever\nhistory exists — if the snapshot cron has only run once, this\ncorrectly returns 1 point (no fabricated history).","operationId":"onboarding_funnel_trend_api_aurem_dev_admin_onboarding_funnel_trend_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"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/aurem-dev/admin/onboarding-funnel/users":{"get":{"tags":["Admin — Onboarding Funnel"],"summary":"Onboarding Funnel Users","description":"Per-user list for ONE stage — email, how long they've been\nstuck, and whether a nudge email has already been sent/clicked.\nSorted most-stuck-first so the oldest cases surface at the top.","operationId":"onboarding_funnel_users_api_aurem_dev_admin_onboarding_funnel_users_get","parameters":[{"name":"stage","in":"query","required":true,"schema":{"type":"string","description":"One of: stage3_no_chat, stage2_project_pending, stage1_github_started, stage4_fully_inactive","title":"Stage"},"description":"One of: stage3_no_chat, stage2_project_pending, stage1_github_started, stage4_fully_inactive"},{"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/aurem-dev/version":{"get":{"tags":["version"],"summary":"Get Version","description":"Public build info — no auth required.\n\nConsumed by the admin System Health page which fetches BOTH the\ncurrent origin's /version AND the production /version to compare\ncommit hashes.  Mismatch → \"out of sync\" banner shown across the\nentire admin surface.","operationId":"get_version_api_aurem_dev_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Version Api Aurem Dev Version Get"}}}}}}},"/api/aurem-dev/admin/system-health/ora-learning":{"get":{"tags":["version"],"summary":"Get Ora Learning Status","description":"Live row-counts for the three ORA learning layers.\n\nReturned shape mirrors what the founder used to ask for manually\nin every session.  This is the permanent replacement for that\nconversation loop.","operationId":"get_ora_learning_status_api_aurem_dev_admin_system_health_ora_learning_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":{"type":"object","title":"Response Get Ora Learning Status Api Aurem Dev Admin System Health Ora Learning Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/advisor/context":{"get":{"tags":["advisor"],"summary":"Get Advisor Context","operationId":"get_advisor_context_api_aurem_dev_advisor_context_get","parameters":[{"name":"project_id","in":"query","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Advisor Context Api Aurem Dev Advisor Context Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/qa/chat-probe":{"post":{"tags":["QA — internal only"],"summary":"Chat Probe","operationId":"chat_probe_api_aurem_dev_qa_chat_probe_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-qa-probe-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Qa-Probe-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProbeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/qa/scope-decision":{"post":{"tags":["QA — internal only"],"summary":"Scope Decision","description":"Iter 334 — Auto-QA agent scope decider. Given a commit message\n+ changed file list, returns the deterministic test scope\n(backend/ui flags + scenario list + reasoning). Same triple gate\nas /qa/chat-probe. The logic itself lives in services/qa_matrix\n(service layer); this endpoint is the HTTP surface for CI and\nmanual founder checks.","operationId":"scope_decision_api_aurem_dev_qa_scope_decision_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-qa-probe-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Qa-Probe-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeDecisionBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/notify-interest":{"post":{"tags":["Notify Interest"],"summary":"Notify Interest","description":"Record interest in an upcoming tool.\n\nBody shape:\n  • tool   — str (required, must be one of _ALLOWED_TOOLS)\n  • email  — str (required, must look like an email address)\n  • repo   — str | null (optional — the project_id the user\n             selected in the /tools card dropdown)\n\nReturns: {\"ok\": True} on success; 400 on bad shape; 429 on\nrate-limit; 503 if the DB is unreachable.  Never raises 500.","operationId":"notify_interest_api_aurem_dev_notify_interest_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Notify Interest Api Aurem Dev Notify Interest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/integrity-log":{"get":{"tags":["Integrity Log"],"summary":"Integrity Log","description":"Public read-only counts. No PII, no repo data. Cached 60s.","operationId":"integrity_log_api_aurem_dev_integrity_log_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Integrity Log Api Aurem Dev Integrity Log Get"}}}}}}},"/api/aurem-dev/loop/start":{"post":{"tags":["Loop Mode"],"summary":"Start Loop","operationId":"start_loop_api_aurem_dev_loop_start_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Start Loop Api Aurem Dev Loop Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/intent-stats":{"get":{"tags":["Loop Mode"],"summary":"Loop Intent Stats","description":"Iter 350 — founder-only intent-gate observability.\n\nHourly buckets (last `hours`, max 168): chat_redirect vs\nloop_triggered vs timeout_failed + overall redirect_rate. Traffic\npatterns are sensitive → same founder 403 as /loop/start.","operationId":"loop_intent_stats_api_aurem_dev_loop_intent_stats_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Loop Intent Stats Api Aurem Dev Loop Intent Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/active":{"get":{"tags":["Loop Mode"],"summary":"Get Active Loop","description":"Iter 212m-115 safety #3 — Resume on browser refresh. Returns\nthe user's most recent non-terminal loop (paused at ship, plan\nawaiting confirm, etc.) so the frontend can re-hydrate the UI\nwithout losing the manual Ship gate.\n\nScoped to {user_id, project_id} so no cross-user leak.","operationId":"get_active_loop_api_aurem_dev_loop_active_get","parameters":[{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Get Active Loop Api Aurem Dev Loop Active Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/{loop_id}/confirm":{"post":{"tags":["Loop Mode"],"summary":"Confirm Loop","operationId":"confirm_loop_api_aurem_dev_loop__loop_id__confirm_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Confirm Loop Api Aurem Dev Loop  Loop Id  Confirm Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/{loop_id}/confirm-ship":{"post":{"tags":["Loop Mode"],"summary":"Confirm Ship Endpoint","description":"Iter 212m-111 — Manual Ship gate. The engine pauses at\nPAUSED_FOR_USER/phase=ship with data.kind='awaiting_ship' once\nExecute/Verify/Scan are clean. The frontend then renders the\n\"Ship to GitHub\" button; clicking it POSTs here with\napproved=true and the engine runs the actual GitHub commit.\n`approved=false` cancels the ship (loop → ABORTED, nothing\npushed). Founder spec: NO auto-ship — always manual.","operationId":"confirm_ship_endpoint_api_aurem_dev_loop__loop_id__confirm_ship_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Confirm Ship Endpoint Api Aurem Dev Loop  Loop Id  Confirm Ship Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/{loop_id}/approve-ship":{"post":{"tags":["Loop Mode"],"summary":"Approve Ship Endpoint","description":"Iter 332 — Dedicated approve endpoint for the SHIP human-review\ngate (test files touched). Thin alias over confirm-ship with\napproved=True so the UI's \"Approve & Ship\" button has a stable,\nself-describing route. Moves PAUSED_FOR_USER/ship → SHIPPING.","operationId":"approve_ship_endpoint_api_aurem_dev_loop__loop_id__approve_ship_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Approve Ship Endpoint Api Aurem Dev Loop  Loop Id  Approve Ship Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/{loop_id}/pause-response":{"post":{"tags":["Loop Mode"],"summary":"Pause Response","operationId":"pause_response_api_aurem_dev_loop__loop_id__pause_response_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PauseResponseBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Pause Response Api Aurem Dev Loop  Loop Id  Pause Response Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/{loop_id}/submit-files":{"post":{"tags":["Loop Mode"],"summary":"Submit Files","description":"Register files (path+content) that the engine's VERIFY phase\nshould lint + self-heal.  Called by the chat orchestrator or the\nfront-end after Step 2 finishes writing.","operationId":"submit_files_api_aurem_dev_loop__loop_id__submit_files_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitFilesBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Submit Files Api Aurem Dev Loop  Loop Id  Submit Files Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/{loop_id}/status":{"get":{"tags":["Loop Mode"],"summary":"Loop Status","operationId":"loop_status_api_aurem_dev_loop__loop_id__status_get","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Loop Status Api Aurem Dev Loop  Loop Id  Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/{loop_id}/stream":{"get":{"tags":["Loop Mode"],"summary":"Loop Stream","operationId":"loop_stream_api_aurem_dev_loop__loop_id__stream_get","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last-Event-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/{loop_id}/cancel":{"post":{"tags":["Loop Mode"],"summary":"Cancel Loop","operationId":"cancel_loop_api_aurem_dev_loop__loop_id__cancel_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Cancel Loop Api Aurem Dev Loop  Loop Id  Cancel Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/force-release-lock":{"post":{"tags":["Loop Mode"],"summary":"Force Release Lock","description":"Founder-gated. Forcibly delete the loop_lock entry for the\ncaller's (project_id, user_id) and mark any associated session\nrow as aborted. Returns the deleted lock's `loop_id` (if any) so\nthe caller has audit trail.","operationId":"force_release_lock_api_aurem_dev_loop_force_release_lock_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForceReleaseBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Force Release Lock Api Aurem Dev Loop Force Release Lock Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/{loop_id}/rollback":{"post":{"tags":["Loop Mode"],"summary":"Rollback Loop","description":"Iter 329 · revert a loop's shipped GitHub commit via a NEW\nrevert commit on the branch. Non-force-push, history preserved.\n\nReturns {ok, loop_id, rollback_status, commit_sha}. Progress is\npersisted on the `loop_sessions` doc for polling.","operationId":"rollback_loop_api_aurem_dev_loop__loop_id__rollback_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoopRollbackBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Rollback Loop Api Aurem Dev Loop  Loop Id  Rollback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/history":{"get":{"tags":["Loop Mode"],"summary":"Loop History","operationId":"loop_history_api_aurem_dev_loop_history_get","parameters":[{"name":"project_id","in":"query","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Loop History Api Aurem Dev Loop History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/loop/_diagnostics":{"get":{"tags":["Loop Mode"],"summary":"Loop Diagnostics","operationId":"loop_diagnostics_api_aurem_dev_loop__diagnostics_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":{"type":"object","title":"Response Loop Diagnostics Api Aurem Dev Loop  Diagnostics Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/rollback/candidates":{"get":{"tags":["User Rollback"],"summary":"Rollback Candidates","description":"List up to 5 of the user's own recently-shipped loops that are\neligible for a one-click revert.","operationId":"rollback_candidates_api_aurem_dev_rollback_candidates_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/aurem-dev/rollback/revert-last-ship":{"post":{"tags":["User Rollback"],"summary":"Revert Last Ship","description":"Reverts the user's MOST RECENT unreverted shipped loop by firing\na REAL github_api_writer.revert_commit() via loop_rollback.","operationId":"revert_last_ship_api_aurem_dev_rollback_revert_last_ship_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":{"type":"object","title":"Response Revert Last Ship Api Aurem Dev Rollback Revert Last Ship Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/_iter309_probe/start":{"get":{"tags":["iter309-probe"],"summary":"Probe Start","description":"Create a synthetic probe loop. Returns `{\"loop_id\": ...}`.\nThe caller then opens `/stream` and holds it — the endpoint will\nemit heartbeats until either the caller aborts or 30 minutes pass.","operationId":"probe_start_api_aurem_dev__iter309_probe_start_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/aurem-dev/_iter309_probe/{loop_id}/stop":{"post":{"tags":["iter309-probe"],"summary":"Probe Stop","operationId":"probe_stop_api_aurem_dev__iter309_probe__loop_id__stop_post","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"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/aurem-dev/_iter309_probe/{loop_id}/stream":{"get":{"tags":["iter309-probe"],"summary":"Probe Stream","description":"SSE stream. Emits a synthetic heartbeat every 15 s using the\nSAME replay buffer as the real loop stream, so the harness sees\nthe same cap-and-reconnect behaviour production traffic gets.\n\nOn reconnect, the client sends `Last-Event-ID: <loop_id>:<seq>`\nand the buffer replays everything since. The natural\n`STREAM_MAX_S` cap (20 min in this build) fires as usual; the\ncaller reconnects and validates event continuity.","operationId":"probe_stream_api_aurem_dev__iter309_probe__loop_id__stream_get","parameters":[{"name":"loop_id","in":"path","required":true,"schema":{"type":"string","title":"Loop Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"Last-Event-ID","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last-Event-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/me/trust-level":{"get":{"tags":["trust-level"],"summary":"Get Trust Level","operationId":"get_trust_level_api_aurem_dev_me_trust_level_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":{"type":"object","title":"Response Get Trust Level Api Aurem Dev Me Trust Level Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["trust-level"],"summary":"Set Trust Level","operationId":"set_trust_level_api_aurem_dev_me_trust_level_put","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrustLevelBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Set Trust Level Api Aurem Dev Me Trust Level Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/diagram/generate":{"post":{"tags":["Diagram"],"summary":"Generate Diagram","operationId":"generate_diagram_api_aurem_dev_diagram_generate_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiagramBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Generate Diagram Api Aurem Dev Diagram Generate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/feature-window/status":{"get":{"tags":["Feature Window"],"summary":"Feature Window Status","operationId":"feature_window_status_api_aurem_dev_feature_window_status_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":{"type":"object","title":"Response Feature Window Status Api Aurem Dev Feature Window Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/mcp":{"get":{"tags":["mcp"],"summary":"Mcp Manifest","description":"GET /mcp — convenience manifest.\n\nA strict MCP client would only GET this endpoint to open an SSE\nstream. But `curl https://…/mcp` is the most common smoke-test and\nwe want it to return something useful instead of 405, so we serve\nthe manifest plus the tool catalogue as JSON.\n\nIter 175 — `endpoint` field MUST be the public URL clients should\nhit, not `request.url`. FastAPI's `request.url` reflects the\ninternal Kubernetes ingress URL (e.g.\n`launch-pad-237.cluster-8.deploy.emergentcf.cloud`) AFTER the\npublic hostname has been stripped by the proxy. Claude Desktop /\nCursor would then try to connect to that internal URL and fail.\nWe use `_public_mcp_endpoint()` (env-driven, same source the\ndiscovery doc uses) so the manifest always points at\n`https://auremcto.com` in prod regardless of how the request was\nrouted internally.","operationId":"mcp_manifest_api_aurem_dev_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["mcp"],"summary":"Mcp Rpc","description":"POST /mcp — JSON-RPC 2.0 dispatch.\n\nSupported methods:\n    initialize, tools/list, tools/call\n\nIter 212m-175 — `Mcp-Session-Id` (spec 2025-03-26) is now\nconsumed by tools/list + tools/call to drive per-session scoped\ntool exposure (max 7 tools per client per response).","operationId":"mcp_rpc_api_aurem_dev_mcp_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"Mcp-Session-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcp-Session-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/mcp/.well-known/mcp":{"get":{"tags":["mcp"],"summary":"Mcp Discovery","description":"MCP discovery endpoint — spec compliant (well-known URL pattern).\n\nReturned at:\n  • /api/aurem-dev/mcp/.well-known/mcp   (via this router)\n  • /.well-known/mcp                     (root alias in main.py)\nBoth serve the same payload so clients can introspect the server\nwithout knowing the AUREM-specific URL prefix.","operationId":"mcp_discovery_api_aurem_dev_mcp__well_known_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Mcp Discovery Api Aurem Dev Mcp  Well Known Mcp Get"}}}}}}},"/api/aurem-dev/mcp/keys":{"post":{"tags":["mcp"],"summary":"Create Mcp Key","description":"Issue an API key for external MCP clients (Claude Desktop,\nCursor, etc.). The key is `sk-aurem-{urlsafe-secret}` and\ninherits the calling user's permissions.\n\nThe user is identified via JWT (this endpoint deliberately does\nNOT accept API keys — only a real logged-in browser session can\nmint new keys, otherwise a stolen key could mint more keys).","operationId":"create_mcp_key_api_aurem_dev_mcp_keys_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":{"type":"object","title":"Response Create Mcp Key Api Aurem Dev Mcp Keys Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["mcp"],"summary":"List Mcp Keys","description":"List the calling user's API keys with their last-used metadata.\nReturns the key prefix only (masked tail) so the dashboard can\nshow \"sk-aurem-…3a7b\" without leaking the secret.","operationId":"list_mcp_keys_api_aurem_dev_mcp_keys_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":{"type":"object","title":"Response List Mcp Keys Api Aurem Dev Mcp Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/mcp/keys/{key_tail}":{"delete":{"tags":["mcp"],"summary":"Revoke Mcp Key","description":"Revoke an API key by its 4-char tail (shown in the masked\nlisting). Idempotent — returns ok=true even if nothing matched.\nScoped to the calling user's keys so users can never revoke\nother users' keys.","operationId":"revoke_mcp_key_api_aurem_dev_mcp_keys__key_tail__delete","parameters":[{"name":"key_tail","in":"path","required":true,"schema":{"type":"string","title":"Key Tail"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Revoke Mcp Key Api Aurem Dev Mcp Keys  Key Tail  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/mcp/install-links":{"get":{"tags":["mcp"],"summary":"Install Links","description":"One-click install links for Cursor, VS Code, and copy-paste\nconfig for Claude Desktop + Claude Code CLI.\n\nRequires JWT auth (a user's session).  Reads the user's newest\nactive `sk-aurem-…` API key; if none exists AND `mint_if_missing`\nis true, mints one on-the-fly so the deep-link is always\nself-contained.  The full key is embedded in the deep-links (they\nopen in the IDE, not in a shared page), and returned in the JSON\nbody as `api_key` so the frontend can render a copy-once affordance.\n\nReturns:\n  {\n    \"endpoint\":    \"<public /api/aurem-dev/mcp URL>\",\n    \"api_key\":     \"sk-aurem-…\",\n    \"api_key_new\": bool,   # true if we minted a key on this call\n    \"config_json\": {...},  # Claude Desktop / any MCP client\n    \"cursor\":      \"cursor://…\",\n    \"vscode\":      \"vscode:mcp/install?…\",\n    \"claude_code_cli\": \"claude mcp add …\",\n    \"instructions\":  { docs strings per client }\n  }","operationId":"install_links_api_aurem_dev_mcp_install_links_get","parameters":[{"name":"mint_if_missing","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Mint If Missing"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","title":"Response Install Links Api Aurem Dev Mcp Install Links Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/integrations/vercel/status":{"get":{"tags":["vercel"],"summary":"Vercel Status","operationId":"vercel_status_api_aurem_dev_integrations_vercel_status_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/aurem-dev/integrations/vercel/tools":{"get":{"tags":["vercel"],"summary":"List Tools","operationId":"list_tools_api_aurem_dev_integrations_vercel_tools_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/aurem-dev/integrations/vercel/audit":{"get":{"tags":["vercel"],"summary":"Audit Log","operationId":"audit_log_api_aurem_dev_integrations_vercel_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"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/aurem-dev/integrations/vercel/execute":{"post":{"tags":["vercel"],"summary":"Execute Tool","operationId":"execute_tool_api_aurem_dev_integrations_vercel_execute_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_ExecuteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/.well-known/oauth-authorization-server":{"get":{"tags":["OAuth"],"summary":"Oauth Discovery","operationId":"oauth_discovery_api_aurem_dev__well_known_oauth_authorization_server_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aurem-dev/oauth/authorize":{"get":{"tags":["OAuth"],"summary":"Oauth Authorize Page","operationId":"oauth_authorize_page_api_aurem_dev_oauth_authorize_get","parameters":[{"name":"response_type","in":"query","required":false,"schema":{"type":"string","default":"code","title":"Response Type"}},{"name":"client_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Client Id"}},{"name":"redirect_uri","in":"query","required":false,"schema":{"type":"string","default":"","title":"Redirect Uri"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"mcp","title":"Scope"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"code_challenge","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code Challenge"}},{"name":"code_challenge_method","in":"query","required":false,"schema":{"type":"string","default":"S256","title":"Code Challenge Method"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","default":"","title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["OAuth"],"summary":"Oauth Authorize Submit","description":"Verify creds (bcrypt — mirrors routers/auth.login), then issue auth code.","operationId":"oauth_authorize_submit_api_aurem_dev_oauth_authorize_post","parameters":[{"name":"response_type","in":"query","required":false,"schema":{"type":"string","default":"code","title":"Response Type"}},{"name":"client_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Client Id"}},{"name":"redirect_uri","in":"query","required":false,"schema":{"type":"string","default":"","title":"Redirect Uri"}},{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"mcp","title":"Scope"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}},{"name":"code_challenge","in":"query","required":false,"schema":{"type":"string","default":"","title":"Code Challenge"}},{"name":"code_challenge_method","in":"query","required":false,"schema":{"type":"string","default":"S256","title":"Code Challenge Method"}}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_oauth_authorize_submit_api_aurem_dev_oauth_authorize_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/oauth/authorize/deny":{"post":{"tags":["OAuth"],"summary":"Oauth Deny","description":"User clicked Cancel — bounce back with access_denied per RFC 6749 §4.1.2.1.","operationId":"oauth_deny_api_aurem_dev_oauth_authorize_deny_post","parameters":[{"name":"redirect_uri","in":"query","required":false,"schema":{"type":"string","default":"","title":"Redirect Uri"}},{"name":"state","in":"query","required":false,"schema":{"type":"string","default":"","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/oauth/token":{"post":{"tags":["OAuth"],"summary":"Oauth Token","description":"Exchange auth code for `sk-aurem-oauth-*` access token (PKCE verified).","operationId":"oauth_token_api_aurem_dev_oauth_token_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_oauth_token_api_aurem_dev_oauth_token_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/oauth/userinfo":{"get":{"tags":["OAuth"],"summary":"Oauth Userinfo","description":"RFC 7662-ish userinfo endpoint. Accepts both JWT and sk-aurem-* tokens.","operationId":"oauth_userinfo_api_aurem_dev_oauth_userinfo_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/aurem-dev/visibility/catalog":{"get":{"tags":["Visibility Kit"],"summary":"Get Catalog","operationId":"get_catalog_api_aurem_dev_visibility_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/aurem-dev/visibility/projects/{project_id}/state":{"get":{"tags":["Visibility Kit"],"summary":"Get State","operationId":"get_state_api_aurem_dev_visibility_projects__project_id__state_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/visibility/projects/{project_id}/bot-policy":{"put":{"tags":["Visibility Kit"],"summary":"Set Bot Policy","operationId":"set_bot_policy_api_aurem_dev_visibility_projects__project_id__bot_policy_put","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotPolicyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/visibility/projects/{project_id}/apply":{"post":{"tags":["Visibility Kit"],"summary":"Apply Kit","operationId":"apply_kit_api_aurem_dev_visibility_projects__project_id__apply_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/aurem-dev/visibility/applications/{application_id}/revert":{"post":{"tags":["Visibility Kit"],"summary":"Revert Application","operationId":"revert_application_api_aurem_dev_visibility_applications__application_id__revert_post","parameters":[{"name":"application_id","in":"path","required":true,"schema":{"type":"string","title":"Application Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","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":{"AddProject":{"properties":{"name":{"type":"string","title":"Name"},"github_url":{"type":"string","title":"Github Url"},"github_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Token"},"branch":{"type":"string","title":"Branch","default":"main"},"tech_stack":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tech Stack"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"},"installation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installation Id"},"funnel_session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Funnel Session"}},"type":"object","required":["name","github_url"],"title":"AddProject"},"ApplyBody":{"properties":{"items":{"items":{"type":"string"},"type":"array","title":"Items"},"force":{"type":"boolean","title":"Force","default":false}},"type":"object","required":["items"],"title":"ApplyBody"},"ApproveActionBody":{"properties":{"proposal_id":{"type":"string","title":"Proposal Id"}},"type":"object","required":["proposal_id"],"title":"ApproveActionBody"},"ApprovePatternBody":{"properties":{"slug":{"type":"string","title":"Slug"},"new_rule_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Rule Text"}},"type":"object","required":["slug"],"title":"ApprovePatternBody"},"BackfillBody":{"properties":{"dry_run":{"type":"boolean","title":"Dry Run","default":true}},"type":"object","title":"BackfillBody"},"Body_add_avatar_api_aurem_dev_admin_video_avatars_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_add_avatar_api_aurem_dev_admin_video_avatars_post"},"Body_oauth_authorize_submit_api_aurem_dev_oauth_authorize_post":{"properties":{"email":{"type":"string","title":"Email","default":""},"password":{"type":"string","title":"Password","default":""}},"type":"object","title":"Body_oauth_authorize_submit_api_aurem_dev_oauth_authorize_post"},"Body_oauth_token_api_aurem_dev_oauth_token_post":{"properties":{"grant_type":{"type":"string","title":"Grant Type","default":""},"code":{"type":"string","title":"Code","default":""},"redirect_uri":{"type":"string","title":"Redirect Uri","default":""},"client_id":{"type":"string","title":"Client Id","default":""},"code_verifier":{"type":"string","title":"Code Verifier","default":""}},"type":"object","title":"Body_oauth_token_api_aurem_dev_oauth_token_post"},"Body_ora_upload_api_aurem_dev_ora_chat_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_ora_upload_api_aurem_dev_ora_chat_upload_post"},"Body_upload_convert_api_aurem_dev_upload_convert_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_convert_api_aurem_dev_upload_convert_post"},"Body_upload_screenshot_api_aurem_dev_visual_bugfix_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},"type":"object","required":["file"],"title":"Body_upload_screenshot_api_aurem_dev_visual_bugfix_upload_post"},"BotPolicyBody":{"properties":{"training_choice":{"additionalProperties":{"type":"string"},"type":"object","title":"Training Choice"}},"type":"object","required":["training_choice"],"title":"BotPolicyBody"},"BrainDecisionBody":{"properties":{"title":{"type":"string","title":"Title"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["title","reason"],"title":"BrainDecisionBody"},"BrainPreferenceBody":{"properties":{"preference":{"type":"string","title":"Preference"}},"type":"object","required":["preference"],"title":"BrainPreferenceBody"},"ChangePasswordBody":{"properties":{"current_password":{"type":"string","title":"Current Password"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["current_password","new_password"],"title":"ChangePasswordBody"},"ChatBody":{"properties":{"prompt":{"type":"string","maxLength":20000,"minLength":1,"title":"Prompt"},"session_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Session Id"},"max_tool_iters":{"type":"integer","maximum":12.0,"minimum":0.0,"title":"Max Tool Iters","default":4},"maxx_mode":{"type":"boolean","title":"Maxx Mode","default":false},"project_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Project Id"},"agent":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Agent","default":"auto"},"mode":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Mode","default":"swift"},"execution_mode":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Execution Mode","default":"prompt"},"ora_panel":{"type":"boolean","title":"Ora Panel","default":false},"screenshot_b64":{"anyOf":[{"type":"string","maxLength":10485760},{"type":"null"}],"title":"Screenshot B64"},"f12_payload":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"F12 Payload"},"task_type":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Task Type"}},"type":"object","required":["prompt"],"title":"ChatBody"},"ChatOpenedBody":{"properties":{"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},"type":"object","title":"ChatOpenedBody"},"CheckoutBody":{"properties":{"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"origin_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Origin Url"}},"type":"object","title":"CheckoutBody"},"CodeBody":{"properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"backup_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backup Code"}},"type":"object","title":"CodeBody"},"ConfirmBody":{"properties":{"approved":{"type":"boolean","title":"Approved"},"feedback":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Feedback"}},"type":"object","required":["approved"],"title":"ConfirmBody"},"ContextBridgePayload":{"properties":{"session_id":{"type":"string","maxLength":200,"minLength":1,"title":"Session Id"},"url":{"type":"string","maxLength":2000,"title":"Url","default":""},"title":{"type":"string","maxLength":300,"title":"Title","default":""},"visible_text":{"type":"string","maxLength":200000,"title":"Visible Text","default":""},"console_errors":{"items":{"type":"string"},"type":"array","maxItems":500,"title":"Console Errors"},"network_metrics":{"items":{"type":"object"},"type":"array","maxItems":200,"title":"Network Metrics"},"captured_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Captured At"}},"type":"object","required":["session_id"],"title":"ContextBridgePayload"},"CreateConfigBody":{"properties":{"label":{"type":"string","title":"Label"},"role":{"type":"string","title":"Role"},"base_url":{"type":"string","title":"Base Url"},"model":{"type":"string","title":"Model"},"api_key":{"type":"string","title":"Api Key"},"params":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Params"}},"type":"object","required":["label","role","base_url","model","api_key"],"title":"CreateConfigBody"},"CreateJobBody":{"properties":{"script":{"type":"string","maxLength":2000,"minLength":1,"title":"Script"},"avatar_id":{"type":"string","title":"Avatar Id"}},"type":"object","required":["script","avatar_id"],"title":"CreateJobBody"},"CreateTicket":{"properties":{"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"body":{"type":"string","title":"Body"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"in_app"}},"type":"object","required":["body"],"title":"CreateTicket"},"CreateTicketByToken":{"properties":{"t":{"type":"string","title":"T"},"e":{"type":"string","title":"E"},"body":{"type":"string","title":"Body"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"email_other"}},"type":"object","required":["t","e","body"],"title":"CreateTicketByToken"},"CreateTicketPublic":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"email":{"type":"string","title":"Email"},"body":{"type":"string","title":"Body"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"landing"}},"type":"object","required":["email","body"],"title":"CreateTicketPublic"},"CreditAlertBody":{"properties":{"threshold":{"type":"number","maximum":1000.0,"exclusiveMinimum":0.0,"title":"Threshold"}},"type":"object","required":["threshold"],"title":"CreditAlertBody"},"DecideBody":{"properties":{"decision":{"type":"string","pattern":"^(approved|rejected)$","title":"Decision"}},"type":"object","required":["decision"],"title":"DecideBody"},"DeleteMeBody":{"properties":{"email_confirmation":{"type":"string","title":"Email Confirmation"}},"type":"object","required":["email_confirmation"],"title":"DeleteMeBody"},"DeployConfigBody":{"properties":{"host":{"type":"string","maxLength":255,"minLength":3,"title":"Host"},"port":{"type":"integer","maximum":65535.0,"minimum":1.0,"title":"Port","default":22},"username":{"type":"string","maxLength":64,"minLength":1,"title":"Username","default":"root"},"private_key":{"type":"string","minLength":40,"title":"Private Key"},"repo_path":{"type":"string","maxLength":255,"minLength":1,"title":"Repo Path"},"branch":{"type":"string","maxLength":64,"minLength":1,"title":"Branch","default":"main"},"compose_file":{"type":"string","maxLength":128,"minLength":1,"title":"Compose File","default":"docker-compose.yml"},"project_id":{"type":"string","maxLength":64,"title":"Project Id","default":""},"target":{"type":"string","pattern":"^(ssh|ftp|sftp)$","title":"Target","description":"ssh = docker-compose remote deploy (default); ftp = FTPS file upload; sftp = SFTP file upload.","default":"ssh"},"remote_dir":{"type":"string","maxLength":255,"title":"Remote Dir","default":""},"ftp_tls":{"type":"boolean","title":"Ftp Tls","default":true},"verify_url":{"type":"string","maxLength":500,"title":"Verify Url","default":""}},"type":"object","required":["host","private_key","repo_path"],"title":"DeployConfigBody"},"DeployEventBody":{"properties":{"kind":{"type":"string","title":"Kind"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},"type":"object","required":["kind"],"title":"DeployEventBody"},"DeployRunBody":{"properties":{"mode":{"type":"string","pattern":"^(deploy|rollback|revert_to|dry_run)$","title":"Mode","default":"deploy"},"sha":{"type":"string","maxLength":64,"title":"Sha","default":""},"message_id":{"type":"string","maxLength":64,"title":"Message Id","default":""},"project_id":{"type":"string","maxLength":64,"title":"Project Id","default":""},"files":{"type":"object","title":"Files","description":"{rel_path: content} — FTP/SFTP only."}},"type":"object","title":"DeployRunBody"},"DiagramBody":{"properties":{"prompt":{"type":"string","maxLength":2000,"minLength":1,"title":"Prompt"},"repo_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo Id"},"diagram_type":{"anyOf":[{"type":"string","maxLength":24},{"type":"null"}],"title":"Diagram Type"}},"type":"object","required":["prompt"],"title":"DiagramBody"},"DismissBatchBody":{"properties":{"project_id":{"type":"string","title":"Project Id"},"finding_batch_id":{"type":"string","title":"Finding Batch Id"}},"type":"object","required":["project_id","finding_batch_id"],"title":"DismissBatchBody"},"DomainConfigBody":{"properties":{"domain":{"type":"string","maxLength":253,"minLength":4,"title":"Domain"},"server_ip":{"type":"string","maxLength":45,"minLength":7,"title":"Server Ip"}},"type":"object","required":["domain","server_ip"],"title":"DomainConfigBody"},"DowngradeBody":{"properties":{"policy":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Policy"}},"type":"object","title":"DowngradeBody"},"ErrorReport":{"properties":{"message":{"type":"string","title":"Message"},"stack":{"type":"string","title":"Stack","default":""},"url":{"type":"string","title":"Url","default":""},"timestamp":{"type":"string","title":"Timestamp","default":""},"type":{"type":"string","title":"Type","default":"console_error"}},"type":"object","required":["message"],"title":"ErrorReport"},"ExecuteReq":{"properties":{"snapshot_id":{"type":"string","title":"Snapshot Id"},"preview_token":{"type":"string","title":"Preview Token"},"confirm":{"type":"boolean","title":"Confirm","default":false},"initiated_by":{"type":"string","title":"Initiated By","default":"admin"}},"type":"object","required":["snapshot_id","preview_token"],"title":"ExecuteReq"},"ExposeBody":{"properties":{"project_id":{"type":"string","title":"Project Id"},"finding_ids":{"items":{"type":"string"},"type":"array","title":"Finding Ids"}},"type":"object","required":["project_id","finding_ids"],"title":"ExposeBody"},"FeedbackBody":{"properties":{"session_id":{"type":"string","title":"Session Id"},"turn_index":{"type":"integer","title":"Turn Index"},"vote":{"type":"string","title":"Vote"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"}},"type":"object","required":["session_id","turn_index","vote"],"title":"FeedbackBody"},"FileEntry":{"properties":{"path":{"type":"string","title":"Path"},"content":{"type":"string","title":"Content"}},"type":"object","required":["path","content"],"title":"FileEntry"},"FindBody":{"properties":{"filter":{"type":"object","title":"Filter"},"limit":{"type":"integer","maximum":500.0,"minimum":1.0,"title":"Limit","default":50},"sort":{"anyOf":[{"items":{"items":{},"type":"array"},"type":"array"},{"type":"null"}],"title":"Sort"}},"type":"object","title":"FindBody"},"ForceReleaseBody":{"properties":{"project_id":{"type":"string","maxLength":128,"minLength":1,"title":"Project Id"}},"type":"object","required":["project_id"],"title":"ForceReleaseBody"},"ForgotPasswordBody":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordBody"},"FounderOverrideBody":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":8,"title":"Reason"}},"type":"object","required":["reason"],"title":"FounderOverrideBody"},"FunnelEvent":{"properties":{"stage":{"type":"string","title":"Stage"},"source":{"type":"string","title":"Source","default":"unknown"},"session_id":{"type":"string","maxLength":64,"minLength":8,"title":"Session Id"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"meta":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Meta"}},"type":"object","required":["stage","session_id"],"title":"FunnelEvent"},"GalleryToggleBody":{"properties":{"project_id":{"type":"string","maxLength":60,"minLength":3,"title":"Project Id"}},"type":"object","required":["project_id"],"title":"GalleryToggleBody"},"GenerateRequest":{"properties":{"source":{"type":"string","title":"Source"},"technical_event":{"type":"object","title":"Technical Event"},"event_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Id"}},"type":"object","required":["source","technical_event"],"title":"GenerateRequest"},"GitHubAppConfigBody":{"properties":{"app_id":{"type":"string","title":"App Id"},"app_slug":{"type":"string","title":"App Slug"},"private_key":{"type":"string","title":"Private Key"},"webhook_secret":{"type":"string","title":"Webhook Secret"}},"type":"object","required":["app_id","app_slug","private_key","webhook_secret"],"title":"GitHubAppConfigBody","description":"Every field is required and validated together. Partial writes\nare refused so the runtime cache never lands in a half-set state."},"GithubBulkRevokeBody":{"properties":{"installation_ids":{"items":{"type":"integer"},"type":"array","maxItems":10,"minItems":1,"title":"Installation Ids"},"confirm_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Confirm Text"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"},"dry_run":{"type":"boolean","title":"Dry Run","default":false}},"type":"object","required":["installation_ids"],"title":"GithubBulkRevokeBody"},"GithubFlagIdleBody":{"properties":{"installation_ids":{"items":{"type":"integer"},"type":"array","maxItems":200,"minItems":1,"title":"Installation Ids"},"reason":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Reason"}},"type":"object","required":["installation_ids"],"title":"GithubFlagIdleBody"},"GrantTokensBody":{"properties":{"tokens":{"type":"integer","title":"Tokens"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["tokens"],"title":"GrantTokensBody"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HintIn":{"properties":{"hint_id":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Hint Id"},"tier":{"type":"string","pattern":"^(free|starter|pro|team|founder)$","title":"Tier"},"emoji":{"anyOf":[{"type":"string","maxLength":4},{"type":"null"}],"title":"Emoji","default":""},"headline":{"type":"string","maxLength":80,"minLength":1,"title":"Headline"},"body":{"type":"string","maxLength":180,"minLength":1,"title":"Body"},"cta_text":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Cta Text","default":""},"cta_link":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Cta Link","default":""},"active":{"type":"boolean","title":"Active","default":true},"weight":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Weight","default":10}},"type":"object","required":["tier","headline","body"],"title":"HintIn","description":"Create / update payload from the admin UI."},"HintsConfigIn":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":true},"delay_ms":{"type":"integer","maximum":5000.0,"minimum":200.0,"title":"Delay Ms","default":600}},"type":"object","title":"HintsConfigIn"},"HouseRulesBody":{"properties":{"rules_text":{"type":"string","maxLength":4000,"title":"Rules Text"}},"type":"object","required":["rules_text"],"title":"HouseRulesBody"},"HouseRulesPayload":{"properties":{"prompt":{"type":"string","title":"Prompt","default":""},"enabled_chat":{"type":"boolean","title":"Enabled Chat","default":false},"enabled_advisor":{"type":"boolean","title":"Enabled Advisor","default":false},"enabled_swift":{"type":"boolean","title":"Enabled Swift","default":false},"enabled_pro":{"type":"boolean","title":"Enabled Pro","default":false},"enabled_maxx":{"type":"boolean","title":"Enabled Maxx","default":false},"advisor_prompt":{"type":"string","title":"Advisor Prompt","default":""},"advisor_prompt_enabled":{"type":"boolean","title":"Advisor Prompt Enabled","default":false},"advisor_llm":{"type":"string","title":"Advisor Llm","default":"glm-5.2"},"chat_prompt":{"type":"string","title":"Chat Prompt","default":""},"chat_prompt_enabled":{"type":"boolean","title":"Chat Prompt Enabled","default":false},"chat_model":{"type":"string","title":"Chat Model","default":""},"chat_temperature":{"type":"number","title":"Chat Temperature","default":0.2},"chat_max_tokens":{"type":"integer","title":"Chat Max Tokens","default":4000},"advisor_temperature":{"type":"number","title":"Advisor Temperature","default":0.2},"advisor_max_tokens":{"type":"integer","title":"Advisor Max Tokens","default":2500}},"type":"object","title":"HouseRulesPayload"},"ImageGenBody":{"properties":{"prompt":{"type":"string","maxLength":1000,"minLength":1,"title":"Prompt"}},"type":"object","required":["prompt"],"title":"ImageGenBody"},"InsertBody":{"properties":{"data":{"type":"object","title":"Data"},"schema":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Schema"}},"type":"object","title":"InsertBody"},"InstallWorkflowBody":{"properties":{"repo":{"type":"string","pattern":"^[\\w.\\-]+/[\\w.\\-]+$","title":"Repo"},"base_branch":{"type":"string","maxLength":120,"minLength":1,"title":"Base Branch","default":"main"}},"type":"object","required":["repo"],"title":"InstallWorkflowBody"},"KillSwitchBody":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","default":""}},"type":"object","required":["enabled"],"title":"KillSwitchBody"},"LinkBody":{"properties":{"message_id":{"type":"string","maxLength":128,"minLength":4,"title":"Message Id"},"commit_sha":{"type":"string","maxLength":64,"minLength":7,"title":"Commit Sha"},"summary":{"type":"string","maxLength":400,"title":"Summary","default":""}},"type":"object","required":["message_id","commit_sha"],"title":"LinkBody"},"LintBody":{"properties":{"brief":{"type":"string","maxLength":20000,"minLength":1,"title":"Brief"}},"type":"object","required":["brief"],"title":"LintBody"},"LoginBody":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginBody"},"LoopBetaBody":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"LoopBetaBody"},"LoopRollbackBody":{"properties":{"confirm":{"type":"string","maxLength":16,"minLength":8,"title":"Confirm"},"force":{"type":"boolean","title":"Force","default":false},"acknowledge_drift":{"type":"boolean","title":"Acknowledge Drift","default":false}},"type":"object","required":["confirm"],"title":"LoopRollbackBody","description":"Client must echo 'ROLLBACK' to confirm intent server-side too."},"MagicLoginExchangeBody":{"properties":{"token":{"type":"string","title":"Token"}},"type":"object","required":["token"],"title":"MagicLoginExchangeBody"},"MaintenanceSettings":{"properties":{"manual_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Manual Enabled"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"window":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Window"},"outage_threshold_s":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Outage Threshold S"}},"type":"object","title":"MaintenanceSettings"},"MessageBody":{"properties":{"session_id":{"type":"string","title":"Session Id"},"content":{"type":"string","maxLength":20000,"minLength":1,"title":"Content"},"think_mode":{"type":"boolean","title":"Think Mode","default":false},"advise_only":{"type":"boolean","title":"Advise Only","default":false},"page_inspection":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Page Inspection"}},"type":"object","required":["session_id","content"],"title":"MessageBody"},"MigrateReq":{"properties":{"execute":{"type":"boolean","title":"Execute","default":false},"purge_tokens":{"type":"boolean","title":"Purge Tokens","default":false}},"type":"object","title":"MigrateReq"},"NewProjectBody":{"properties":{"brief":{"type":"string","maxLength":2000,"minLength":10,"title":"Brief"},"stack_preference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stack Preference"}},"type":"object","required":["brief"],"title":"NewProjectBody"},"NewSessionBody":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Title","default":""}},"type":"object","title":"NewSessionBody"},"OnboardingIntentBody":{"properties":{"intent":{"type":"string","title":"Intent"}},"type":"object","required":["intent"],"title":"OnboardingIntentBody"},"PauseResponseBody":{"properties":{"action":{"type":"string","pattern":"^(retry|skip|abort)$","title":"Action"},"feedback":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Feedback"}},"type":"object","required":["action"],"title":"PauseResponseBody"},"PinLoginBody":{"properties":{"pin":{"type":"string","maxLength":32,"minLength":1,"title":"Pin"},"identifier":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Identifier"}},"type":"object","required":["pin"],"title":"PinLoginBody"},"PodShellRequest":{"properties":{"command":{"type":"string","maxLength":1000,"minLength":1,"title":"Command"}},"type":"object","required":["command"],"title":"PodShellRequest"},"PodShellResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"},"stdout":{"type":"string","title":"Stdout","default":""},"stderr":{"type":"string","title":"Stderr","default":""},"exit_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exit Code"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"error_class":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Class"},"command":{"type":"string","title":"Command","default":""}},"type":"object","required":["ok"],"title":"PodShellResponse"},"PreviewReq":{"properties":{"snapshot_id":{"type":"string","title":"Snapshot Id"}},"type":"object","required":["snapshot_id"],"title":"PreviewReq"},"PreviewScanBody":{"properties":{"code":{"type":"string","maxLength":16777217,"minLength":0,"title":"Code"},"lang":{"type":"string","maxLength":32,"minLength":1,"title":"Lang"}},"type":"object","required":["code","lang"],"title":"PreviewScanBody"},"PreviewSessionBody":{"properties":{"device":{"type":"string","title":"Device","default":"phone"}},"type":"object","title":"PreviewSessionBody"},"ProbeBody":{"properties":{"prompt":{"type":"string","title":"Prompt"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},"type":"object","required":["prompt"],"title":"ProbeBody"},"ProvisionBody":{"properties":{"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"migrate_existing_data":{"type":"boolean","title":"Migrate Existing Data","default":true}},"type":"object","title":"ProvisionBody"},"PushBody":{"properties":{"repo":{"type":"string","title":"Repo"},"branch":{"type":"string","title":"Branch","default":"main"},"commit_message":{"type":"string","title":"Commit Message","default":"AUREM: push from chat session"},"files":{"anyOf":[{"items":{"$ref":"#/components/schemas/FileEntry"},"type":"array"},{"type":"null"}],"title":"Files"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["repo"],"title":"PushBody"},"PushFixBody":{"properties":{"repo":{"type":"string","pattern":"^[\\w.\\-]+/[\\w.\\-]+$","title":"Repo"},"fix_title":{"type":"string","maxLength":200,"minLength":3,"title":"Fix Title"},"fix_description":{"type":"string","maxLength":8000,"minLength":3,"title":"Fix Description"},"file_path":{"type":"string","maxLength":500,"minLength":1,"title":"File Path"},"file_content":{"type":"string","minLength":1,"title":"File Content"},"base_branch":{"type":"string","maxLength":120,"minLength":1,"title":"Base Branch","default":"main"}},"type":"object","required":["repo","fix_title","fix_description","file_path","file_content"],"title":"PushFixBody"},"RateTableBody":{"properties":{"rates":{"type":"object","title":"Rates"}},"type":"object","required":["rates"],"title":"RateTableBody"},"RegenerateBody":{"properties":{"brief_refinement":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brief Refinement"},"stack_preference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stack Preference"}},"type":"object","title":"RegenerateBody"},"RejectActionBody":{"properties":{"proposal_id":{"type":"string","title":"Proposal Id"}},"type":"object","required":["proposal_id"],"title":"RejectActionBody"},"RejectPatternBody":{"properties":{"slug":{"type":"string","title":"Slug"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["slug"],"title":"RejectPatternBody"},"ReplyByToken":{"properties":{"t":{"type":"string","title":"T"},"e":{"type":"string","title":"E"},"body":{"type":"string","title":"Body"}},"type":"object","required":["t","e","body"],"title":"ReplyByToken"},"ResetPasswordBody":{"properties":{"token":{"type":"string","title":"Token"},"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["token","new_password"],"title":"ResetPasswordBody"},"ResolveBody":{"properties":{"project_id":{"type":"string","title":"Project Id"},"finding_id":{"type":"string","title":"Finding Id"}},"type":"object","required":["project_id","finding_id"],"title":"ResolveBody"},"RevokeAllBody":{"properties":{"user_id":{"type":"string","title":"User Id"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["user_id"],"title":"RevokeAllBody"},"RobotGuidePayload":{"properties":{"signup_message":{"type":"string","title":"Signup Message","default":""},"login_message":{"type":"string","title":"Login Message","default":""}},"type":"object","title":"RobotGuidePayload"},"ScopeDecisionBody":{"properties":{"commit_message":{"type":"string","title":"Commit Message"},"changed_files":{"items":{"type":"string"},"type":"array","title":"Changed Files"}},"type":"object","required":["commit_message","changed_files"],"title":"ScopeDecisionBody"},"SetActiveBody":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"SetActiveBody"},"SetOraPinBody":{"properties":{"pin":{"type":"string","maxLength":32,"minLength":8,"title":"Pin"}},"type":"object","required":["pin"],"title":"SetOraPinBody"},"SetTrackBody":{"properties":{"track":{"type":"string","title":"Track"}},"type":"object","required":["track"],"title":"SetTrackBody"},"ShipBody":{"properties":{"project_id":{"type":"string","title":"Project Id"}},"type":"object","required":["project_id"],"title":"ShipBody"},"SignupBody":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"honeypot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Honeypot"},"form_age_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Form Age Ms"}},"type":"object","required":["email","password"],"title":"SignupBody"},"SlashBody":{"properties":{"command":{"type":"string","pattern":"^/?[a-z][a-z0-9\\-]*(?:\\s.*)?$","title":"Command"},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"},"explain":{"type":"boolean","title":"Explain","default":true}},"type":"object","required":["command"],"title":"SlashBody"},"SnapshotReq":{"properties":{"owner":{"type":"string","title":"Owner"},"repo":{"type":"string","title":"Repo"},"branch":{"type":"string","title":"Branch","default":"main"},"file_paths":{"items":{"type":"string"},"type":"array","minItems":1,"title":"File Paths"}},"type":"object","required":["owner","repo","file_paths"],"title":"SnapshotReq"},"SnoozeBody":{"properties":{"project_id":{"type":"string","title":"Project Id"},"finding_id":{"type":"string","title":"Finding Id"},"days":{"type":"integer","title":"Days","default":7}},"type":"object","required":["project_id","finding_id"],"title":"SnoozeBody"},"StartBody":{"properties":{"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"},"user_message":{"type":"string","maxLength":8000,"minLength":1,"title":"User Message"},"session_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Session Id"}},"type":"object","required":["user_message"],"title":"StartBody"},"StripePricesBody":{"properties":{"starter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starter"},"pro":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pro"},"team":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team"},"starter_annual":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Starter Annual"},"pro_annual":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pro Annual"},"team_annual":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Team Annual"}},"type":"object","title":"StripePricesBody"},"SubmitBody":{"properties":{"text":{"type":"string","maxLength":4000,"minLength":8,"title":"Text"}},"type":"object","required":["text"],"title":"SubmitBody"},"SubmitFilesBody":{"properties":{"files":{"items":{"type":"object"},"type":"array","maxItems":200,"title":"Files"}},"type":"object","required":["files"],"title":"SubmitFilesBody"},"SupportReply":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"SupportReply"},"SuspendBody":{"properties":{"suspend":{"type":"boolean","title":"Suspend"}},"type":"object","required":["suspend"],"title":"SuspendBody"},"TaskBody":{"properties":{"project_id":{"type":"string","title":"Project Id"},"task":{"type":"string","title":"Task"},"files":{"items":{"type":"string"},"type":"array","title":"Files","default":[]},"context":{"type":"string","title":"Context","default":""},"auto_deploy":{"type":"boolean","title":"Auto Deploy","default":false},"maxx_mode":{"type":"boolean","title":"Maxx Mode","default":false}},"type":"object","required":["project_id","task"],"title":"TaskBody"},"TaskFollowupBody":{"properties":{"session_id":{"type":"string","title":"Session Id"},"task_id":{"type":"string","title":"Task Id"}},"type":"object","required":["session_id","task_id"],"title":"TaskFollowupBody"},"TierChangeBody":{"properties":{"tier":{"type":"string","pattern":"^(free|starter|pro|team|founder)$","title":"Tier"}},"type":"object","required":["tier"],"title":"TierChangeBody"},"TransferRepoBody":{"properties":{"new_owner":{"type":"string","title":"New Owner"},"confirm":{"type":"boolean","title":"Confirm","default":false}},"type":"object","required":["new_owner"],"title":"TransferRepoBody"},"TransferSupabaseBody":{"properties":{"target_organization_id":{"type":"string","title":"Target Organization Id"},"confirm":{"type":"boolean","title":"Confirm","default":false}},"type":"object","required":["target_organization_id"],"title":"TransferSupabaseBody"},"TrustLevelBody":{"properties":{"trust_level":{"type":"string","pattern":"^L[123]$","title":"Trust Level"}},"type":"object","required":["trust_level"],"title":"TrustLevelBody"},"TurnShipCancelledBody":{"properties":{"session_id":{"type":"string","title":"Session Id"},"turn_index":{"type":"integer","title":"Turn Index"}},"type":"object","required":["session_id","turn_index"],"title":"TurnShipCancelledBody"},"TurnShippedBody":{"properties":{"session_id":{"type":"string","title":"Session Id"},"turn_index":{"type":"integer","title":"Turn Index"},"task_id":{"type":"string","title":"Task Id"}},"type":"object","required":["session_id","turn_index","task_id"],"title":"TurnShippedBody"},"TwoFAVerifyBody":{"properties":{"mfa_token":{"type":"string","title":"Mfa Token"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"backup_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Backup Code"}},"type":"object","required":["mfa_token"],"title":"TwoFAVerifyBody","description":"Iter 212m-20 — payload for /auth/login/2fa-verify. Exactly one\nof `code` / `backup_code` must be supplied."},"UnlockRequestBody":{"properties":{"reason":{"type":"string","maxLength":2000,"minLength":10,"title":"Reason"}},"type":"object","required":["reason"],"title":"UnlockRequestBody"},"UpdateBody":{"properties":{"filter":{"type":"object","title":"Filter"},"patch":{"type":"object","title":"Patch"}},"type":"object","title":"UpdateBody"},"UpdateConfigBody":{"properties":{"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"base_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Base Url"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"api_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key"},"params":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Params"}},"type":"object","title":"UpdateConfigBody"},"UpdateHouseRulesBody":{"properties":{"rules_text":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Rules Text"},"enforcement_mode":{"anyOf":[{"type":"string","pattern":"^(block|rewrite)$"},{"type":"null"}],"title":"Enforcement Mode"}},"type":"object","title":"UpdateHouseRulesBody"},"UpdateLimitsBody":{"properties":{"rate_limit_per_hour":{"anyOf":[{"type":"integer","maximum":100000.0,"minimum":0.0},{"type":"null"}],"title":"Rate Limit Per Hour"},"daily_token_cap":{"anyOf":[{"type":"integer","maximum":100000000.0,"minimum":0.0},{"type":"null"}],"title":"Daily Token Cap"}},"type":"object","title":"UpdateLimitsBody"},"UpdatePhoneBody":{"properties":{"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"}},"type":"object","title":"UpdatePhoneBody"},"UpdateProject":{"properties":{"github_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Token"},"branch":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Branch"},"tech_stack":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tech Stack"},"preview_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Url"},"installation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installation Id"}},"type":"object","title":"UpdateProject"},"UpdateSecretsBody":{"properties":{"deepgram_api_key":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Deepgram Api Key"},"fal_api_key":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Fal Api Key"}},"type":"object","title":"UpdateSecretsBody"},"UsdCapsBody":{"properties":{"per_plan":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Per Plan"},"global_kill_switch_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Global Kill Switch Usd"}},"type":"object","title":"UsdCapsBody"},"UserOverrideBody":{"properties":{"bin_id":{"type":"string","title":"Bin Id"},"value":{"type":"boolean","title":"Value"}},"type":"object","required":["bin_id","value"],"title":"UserOverrideBody"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyPatBody":{"properties":{"repo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Repo"},"pat":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pat"},"github_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Url"}},"type":"object","title":"VerifyPatBody"},"_AckFixBody":{"properties":{"project_id":{"type":"string","title":"Project Id"}},"type":"object","required":["project_id"],"title":"_AckFixBody"},"_ApplyBody":{"properties":{"project_id":{"type":"string","title":"Project Id"}},"type":"object","required":["project_id"],"title":"_ApplyBody"},"_CancelBody":{"properties":{"claim_id":{"type":"string","title":"Claim Id"}},"type":"object","required":["claim_id"],"title":"_CancelBody"},"_ConfigBody":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"levels":{"type":"object","title":"Levels"}},"type":"object","required":["enabled","levels"],"title":"_ConfigBody"},"_ConfirmBody":{"properties":{"claim_id":{"type":"string","title":"Claim Id"}},"type":"object","required":["claim_id"],"title":"_ConfirmBody"},"_ExecuteIn":{"properties":{"tool":{"type":"string","title":"Tool"},"args":{"type":"object","title":"Args","default":{}}},"type":"object","required":["tool"],"title":"_ExecuteIn"},"_GateCompletedBody":{"properties":{"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},"type":"object","title":"_GateCompletedBody"},"_NudgeBody":{"properties":{"dry_run":{"type":"boolean","title":"Dry Run","default":false},"stages":{"items":{"type":"string"},"type":"array","title":"Stages","default":["t24","t72"]},"user_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"User Ids"}},"type":"object","title":"_NudgeBody"},"_NudgeShownBody":{"properties":{"trigger":{"type":"string","title":"Trigger"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},"type":"object","required":["trigger"],"title":"_NudgeShownBody"},"_SeoRunPayload":{"properties":{"project_id":{"type":"string","title":"Project Id"},"plan":{"type":"string","title":"Plan","default":"swift"},"site_url":{"type":"string","title":"Site Url","default":""},"title":{"type":"string","title":"Title","default":""},"description":{"type":"string","title":"Description","default":""},"og_image":{"type":"string","title":"Og Image","default":""},"author":{"type":"string","title":"Author","default":""},"dry_run":{"type":"boolean","title":"Dry Run","default":true},"commit_message":{"type":"string","title":"Commit Message","default":"chore(seo): aurem auto-fix"}},"type":"object","required":["project_id"],"title":"_SeoRunPayload"},"_SkillBody":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"urls":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Urls"},"max_results":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Results"},"deep":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Deep"},"topic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"},"formats":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Formats"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}},"type":"object","title":"_SkillBody"},"_ViewedBody":{"properties":{"project_id":{"type":"string","title":"Project Id"}},"type":"object","required":["project_id"],"title":"_ViewedBody"},"_WaitlistBody":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"_WaitlistBody"},"routers__admin_qa__RollbackBody":{"properties":{"target_sha":{"type":"string","title":"Target Sha"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","default":""}},"type":"object","required":["target_sha"],"title":"RollbackBody"},"routers__chat__misc__IntentClassifyBody":{"properties":{"message":{"type":"string","title":"Message"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id"}},"type":"object","required":["message"],"title":"IntentClassifyBody"},"routers__chat_commits__RollbackBody":{"properties":{"message_id":{"type":"string","maxLength":128,"minLength":4,"title":"Message Id"}},"type":"object","required":["message_id"],"title":"RollbackBody"},"routers__cto_projects__rollback__RollbackBody":{"properties":{"confirm":{"type":"string","title":"Confirm"}},"type":"object","required":["confirm"],"title":"RollbackBody"},"routers__founder_offer___ClaimBody":{"properties":{"repo_id":{"type":"string","title":"Repo Id"},"site_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Url","default":""}},"type":"object","required":["repo_id"],"title":"_ClaimBody"},"routers__github_app___ClaimBody":{"properties":{"installation_id":{"type":"integer","title":"Installation Id"}},"type":"object","required":["installation_id"],"title":"_ClaimBody"},"routers__github_deploy__ConnectBody":{"properties":{"token":{"type":"string","maxLength":512,"minLength":10,"title":"Token"},"repo":{"anyOf":[{"type":"string","pattern":"^[\\w.\\-]+/[\\w.\\-]+$"},{"type":"null"}],"title":"Repo"}},"type":"object","required":["token"],"title":"ConnectBody"},"routers__hosted_deploy__ConnectBody":{"properties":{"project_id":{"type":"string","title":"Project Id"},"provider":{"type":"string","enum":["vercel","netlify"],"title":"Provider"},"hook_url":{"type":"string","maxLength":400,"minLength":20,"title":"Hook Url"}},"type":"object","required":["project_id","provider","hook_url"],"title":"ConnectBody"},"routers__ora_chat__IntentClassifyBody":{"properties":{"text":{"type":"string","maxLength":8000,"minLength":0,"title":"Text"}},"type":"object","required":["text"],"title":"IntentClassifyBody"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer JWT from POST /api/aurem-dev/auth/login. AUREM does not run a separate OAuth 2.0 authorization server — this is a direct credential exchange, not an authorization-code flow. The token's effective access level maps to these named scopes: `read:repo` (read a connected repo's files/scan results), `write:repo` (propose file edits), `ship:commit` (commit an approved edit to GitHub), `admin` (admin-only endpoints under /admin-ops, /admin-analytics, etc). See /.well-known/oauth-protected-resource for the machine-readable scopes_supported list (RFC 9728)."}}},"security":[{"BearerAuth":[]}]}