{"openapi":"3.1.0","info":{"title":"Mantrana","description":"Turns rough ideas into production specifications with a multi-juror deliberation.","version":"2.0.0"},"paths":{"/api/auth/google/redirect":{"get":{"summary":"Google Redirect","operationId":"google_redirect_api_auth_google_redirect_get","parameters":[{"name":"return_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return To"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/google/callback":{"get":{"summary":"Google Callback","operationId":"google_callback_api_auth_google_callback_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/logout":{"post":{"summary":"Logout","operationId":"logout_api_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/me":{"get":{"summary":"Me","operationId":"me_api_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/runs":{"get":{"summary":"List Runs","operationId":"list_runs_api_runs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Create Run","operationId":"create_run_api_runs_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/queue/status":{"get":{"summary":"Queue Status","description":"Advisory queue-capacity snapshot for the workbench preflight.","operationId":"queue_status_api_queue_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/runs/{run_id}":{"get":{"summary":"Get Run","operationId":"get_run_api_runs__run_id__get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/runs/{run_id}/answers":{"post":{"summary":"Submit Run Answers","operationId":"submit_run_answers_api_runs__run_id__answers_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitAnswersRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/clarifications":{"get":{"summary":"List Clarifications","operationId":"list_clarifications_api_clarifications_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/clarifications/{clar_id}":{"delete":{"summary":"Remove Clarification","operationId":"remove_clarification_api_clarifications__clar_id__delete","parameters":[{"name":"clar_id","in":"path","required":true,"schema":{"type":"string","title":"Clar Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/runs/{run_id}/cancel":{"post":{"summary":"Cancel Run","operationId":"cancel_run_api_runs__run_id__cancel_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/runs/{run_id}/stream":{"get":{"summary":"Stream Run","operationId":"stream_run_api_runs__run_id__stream_get","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"after","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"After"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/runs/{run_id}/order":{"post":{"summary":"Create Order","description":"Run payments are retired (spec §24): runs are funded exclusively by\nthe shared USD wallet, so no Razorpay order can be minted for a run.","operationId":"create_order_api_runs__run_id__order_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/credits/topup":{"post":{"summary":"Create Topup","description":"Prepaid-credit topup for the API (MCP) channel. Reuses the hosted\nRazorpay checkout; only a verified, amount-matched payment.captured\nwebhook credits the account.","operationId":"create_topup_api_credits_topup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/credits":{"get":{"summary":"Get Credits","operationId":"get_credits_api_credits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/payments/verify":{"post":{"summary":"Verify Payment","operationId":"verify_payment_api_payments_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPaymentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/webhooks/razorpay":{"post":{"summary":"Razorpay Webhook","description":"Provider-only, raw-body HMAC authenticated, idempotent webhook.\nNo session, no CSRF. 2xx is returned only after the database transition\ncommits.","operationId":"razorpay_webhook_api_webhooks_razorpay_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/runs/{run_id}/publish":{"post":{"summary":"Publish Run","operationId":"publish_run_api_runs__run_id__publish_post","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Revoke Published Run","operationId":"revoke_published_run_api_runs__run_id__publish_delete","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/public/specs/{slug}":{"get":{"summary":"Public Spec","operationId":"public_spec_api_public_specs__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys":{"get":{"summary":"Get Api Keys","operationId":"get_api_keys_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Create Api Key","operationId":"create_api_key_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKeyRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/keys/{key_id}":{"delete":{"summary":"Revoke Api Key","operationId":"revoke_api_key_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Serve Prelogin","operationId":"serve_prelogin__head","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"head":{"summary":"Serve Prelogin","operationId":"serve_prelogin__head","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/app":{"get":{"summary":"Serve Postlogin","operationId":"serve_postlogin_app_head","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"head":{"summary":"Serve Postlogin","operationId":"serve_postlogin_app_head","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/health":{"get":{"summary":"Health","operationId":"health_api_health_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Health","operationId":"health_api_health_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/downloads/mantrana_recon.py":{"get":{"summary":"Download Recon","operationId":"download_recon_downloads_mantrana_recon_py_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Download Recon","operationId":"download_recon_downloads_mantrana_recon_py_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/favicon.svg":{"get":{"summary":"Favicon Svg","operationId":"favicon_svg_favicon_svg_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Favicon Svg","operationId":"favicon_svg_favicon_svg_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/apple-touch-icon.png":{"get":{"summary":"Apple Touch Icon","operationId":"apple_touch_icon_apple_touch_icon_png_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Apple Touch Icon","operationId":"apple_touch_icon_apple_touch_icon_png_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/og-image.png":{"get":{"summary":"Og Image","operationId":"og_image_og_image_png_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Og Image","operationId":"og_image_og_image_png_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Robots Txt","operationId":"robots_txt_robots_txt_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/mcp-registry-auth":{"get":{"summary":"Mcp Registry Auth","description":"Public ownership proof for the mantrana.co domain (co.mantrana/*\nnamespace) on the official MCP Registry; the paired private key lives\noff-repo, so rotating the key is a file change, not a code change.","operationId":"mcp_registry_auth__well_known_mcp_registry_auth_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Mcp Registry Auth","description":"Public ownership proof for the mantrana.co domain (co.mantrana/*\nnamespace) on the official MCP Registry; the paired private key lives\noff-repo, so rotating the key is a file change, not a code change.","operationId":"mcp_registry_auth__well_known_mcp_registry_auth_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap Xml","operationId":"sitemap_xml_sitemap_xml_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Sitemap Xml","operationId":"sitemap_xml_sitemap_xml_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/s/{slug}":{"head":{"summary":"Serve Share","description":"Public, read-only page for an author-published specification.","operationId":"serve_share_s__slug__head","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Serve Share","description":"Public, read-only page for an author-published specification.","operationId":"serve_share_s__slug__head","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/config":{"get":{"summary":"Api Config","operationId":"api_config_api_config_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Api Config","operationId":"api_config_api_config_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/pricing":{"get":{"summary":"Api Pricing","operationId":"api_pricing_api_pricing_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Api Pricing","operationId":"api_pricing_api_pricing_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/benchmark":{"get":{"summary":"Api Benchmark","operationId":"api_benchmark_api_benchmark_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Api Benchmark","operationId":"api_benchmark_api_benchmark_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/example-spec":{"get":{"summary":"Api Example Spec","operationId":"api_example_spec_api_example_spec_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"head":{"summary":"Api Example Spec","operationId":"api_example_spec_api_example_spec_head","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/developers":{"get":{"summary":"Serve Developers","description":"Public docs page for the MCP server and API keys.","operationId":"serve_developers_developers_head","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}},"head":{"summary":"Serve Developers","description":"Public docs page for the MCP server and API keys.","operationId":"serve_developers_developers_head","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"AnswerItem":{"properties":{"id":{"type":"string","title":"Id"},"answer":{"type":"string","title":"Answer"}},"type":"object","required":["id","answer"],"title":"AnswerItem"},"CreateKeyRequest":{"properties":{"label":{"type":"string","title":"Label"}},"type":"object","required":["label"],"title":"CreateKeyRequest"},"CreateRunRequest":{"properties":{"rough_idea":{"type":"string","title":"Rough Idea"},"tier_id":{"type":"string","title":"Tier Id"},"billing_mode":{"type":"string","title":"Billing Mode","default":"auto"},"client_request_id":{"type":"string","title":"Client Request Id"}},"type":"object","required":["rough_idea","tier_id","client_request_id"],"title":"CreateRunRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PublishResponse":{"properties":{"slug":{"type":"string","title":"Slug"},"url":{"type":"string","title":"Url"},"share_note":{"type":"string","title":"Share Note"}},"type":"object","required":["slug","url","share_note"],"title":"PublishResponse"},"SubmitAnswersRequest":{"properties":{"answers":{"items":{"$ref":"#/components/schemas/AnswerItem"},"type":"array","title":"Answers","default":[]},"evidence_pack":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Evidence Pack"}},"type":"object","title":"SubmitAnswersRequest"},"TopupRequest":{"properties":{"amount_cents":{"type":"integer","title":"Amount Cents"}},"type":"object","required":["amount_cents"],"title":"TopupRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyPaymentRequest":{"properties":{"run_id":{"type":"string","title":"Run Id"},"razorpay_order_id":{"type":"string","title":"Razorpay Order Id"},"razorpay_payment_id":{"type":"string","title":"Razorpay Payment Id"},"razorpay_signature":{"type":"string","title":"Razorpay Signature"}},"type":"object","required":["run_id","razorpay_order_id","razorpay_payment_id","razorpay_signature"],"title":"VerifyPaymentRequest"}}}}