{"openapi":"3.1.0","info":{"title":"SpecProof Portal API","version":"1.0.0"},"paths":{"/admin/login":{"post":{"tags":["admin"],"summary":"Admin Login","operationId":"admin_login_admin_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminLoginPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stats":{"get":{"tags":["admin"],"summary":"Admin Stats","operationId":"admin_stats_admin_stats_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/users":{"get":{"tags":["admin"],"summary":"Admin Users","operationId":"admin_users_admin_users_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/orgs":{"get":{"tags":["admin"],"summary":"Admin Orgs","operationId":"admin_orgs_admin_orgs_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/usage":{"get":{"tags":["admin"],"summary":"Admin Usage","operationId":"admin_usage_admin_usage_get","parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"30d","title":"Range"}},{"name":"org_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/orgs/{org_id}":{"put":{"tags":["admin"],"summary":"Admin Update Org","operationId":"admin_update_org_admin_orgs__org_id__put","parameters":[{"name":"org_id","in":"path","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/users/{user_id}":{"delete":{"tags":["admin"],"summary":"Admin Delete User","operationId":"admin_delete_user_admin_users__user_id__delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api-keys":{"get":{"tags":["admin"],"summary":"Admin Api Keys","operationId":"admin_api_keys_admin_api_keys_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api-keys/{key_id}/revoke":{"post":{"tags":["admin"],"summary":"Admin Revoke Key","operationId":"admin_revoke_key_admin_api_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/invoices":{"get":{"tags":["admin"],"summary":"Admin Invoices","operationId":"admin_invoices_admin_invoices_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/mcp/health":{"get":{"tags":["admin"],"summary":"Admin Mcp Health","operationId":"admin_mcp_health_admin_mcp_health_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/mcp/reload":{"post":{"tags":["admin"],"summary":"Admin Mcp Reload","operationId":"admin_mcp_reload_admin_mcp_reload_post","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/documents":{"get":{"tags":["admin"],"summary":"Admin Documents","operationId":"admin_documents_admin_documents_get","parameters":[{"name":"doc_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Type"}},{"name":"search_pattern","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Pattern"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/documents/stats":{"get":{"tags":["admin"],"summary":"Admin Documents Stats","operationId":"admin_documents_stats_admin_documents_stats_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/documents/{doc_id}":{"get":{"tags":["admin"],"summary":"Admin Document Detail","description":"Get a document's metadata and content chunks.","operationId":"admin_document_detail_admin_documents__doc_id__get","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Admin Delete Document","description":"Delete a document and all its chunks, FTS entries, and embeddings.","operationId":"admin_delete_document_admin_documents__doc_id__delete","parameters":[{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/documents/batch-delete":{"post":{"tags":["admin"],"summary":"Admin Batch Delete Documents","description":"Delete multiple documents at once (e.g., old versions).","operationId":"admin_batch_delete_documents_admin_documents_batch_delete_post","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDeletePayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/documents/versions/{spec_base}":{"get":{"tags":["admin"],"summary":"Admin Document Versions","description":"Get all versions of a spec (e.g., spec_base=26501 returns 26501_j00.docx, 26501_j30.docx).","operationId":"admin_document_versions_admin_documents_versions__spec_base__get","parameters":[{"name":"spec_base","in":"path","required":true,"schema":{"type":"string","title":"Spec Base"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/documents/multi-version":{"get":{"tags":["admin"],"summary":"Admin Multi Version Docs","description":"List all specs that have multiple versions, with version counts.","operationId":"admin_multi_version_docs_admin_documents_multi_version_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}},{"name":"doc_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Type"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/crawler/schedule":{"get":{"tags":["admin"],"summary":"Admin Crawler Schedule Get","operationId":"admin_crawler_schedule_get_admin_crawler_schedule_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin"],"summary":"Admin Crawler Schedule Put","operationId":"admin_crawler_schedule_put_admin_crawler_schedule_put","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/crawler/run":{"post":{"tags":["admin"],"summary":"Admin Crawler Run","description":"Start an indexing run. Body: {\"mode\": \"gpu\"|\"local\", \"skip_download\": bool}.","operationId":"admin_crawler_run_admin_crawler_run_post","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/crawler/stop":{"post":{"tags":["admin"],"summary":"Admin Crawler Stop","description":"Stop the running indexer, wherever it is running. A build only goes live at the final\natomic swap, so stopping mid-run cannot damage the live corpus.","operationId":"admin_crawler_stop_admin_crawler_stop_post","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/crawler/mpeg-credentials":{"get":{"tags":["admin"],"summary":"Admin Crawler Mpeg Credentials Get","operationId":"admin_crawler_mpeg_credentials_get_admin_crawler_mpeg_credentials_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["admin"],"summary":"Admin Crawler Mpeg Credentials Put","operationId":"admin_crawler_mpeg_credentials_put_admin_crawler_mpeg_credentials_put","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/crawler/status":{"get":{"tags":["admin"],"summary":"Admin Crawler Status","operationId":"admin_crawler_status_admin_crawler_status_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/support/threads":{"get":{"tags":["admin"],"summary":"Admin List Support Threads","operationId":"admin_list_support_threads_admin_support_threads_get","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/support/threads/{user_id}":{"get":{"tags":["admin"],"summary":"Admin Get Support Thread","operationId":"admin_get_support_thread_admin_support_threads__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"org_id","in":"query","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/support/threads/{user_id}/reply":{"post":{"tags":["admin"],"summary":"Admin Reply Support Thread","operationId":"admin_reply_support_thread_admin_support_threads__user_id__reply_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"org_id","in":"query","required":true,"schema":{"type":"string","title":"Org Id"}},{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportReplyPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/documents/upload":{"post":{"tags":["admin"],"summary":"Admin Documents Upload","operationId":"admin_documents_upload_admin_documents_upload_post","parameters":[{"name":"x-admin-secret","in":"header","required":true,"schema":{"type":"string","title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_admin_documents_upload_admin_documents_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requirements/specs":{"get":{"tags":["requirements"],"summary":"List Specs With Requirements","description":"Documents that have extracted requirements, with per-obligation counts —\npowers the spec picker and shows where the normative load concentrates.","operationId":"list_specs_with_requirements_requirements_specs_get","parameters":[{"name":"doc_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Type"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/requirements":{"get":{"tags":["requirements"],"summary":"List Requirements","operationId":"list_requirements_requirements_get","parameters":[{"name":"document_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Document Id"}},{"name":"spec","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"LIKE match on corpus spec_number/filename","title":"Spec"},"description":"LIKE match on corpus spec_number/filename"},{"name":"obligation","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Obligation"}},{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keyword"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"substring match on requirement text","title":"Search"},"description":"substring match on requirement text"},{"name":"coverage","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"filter: 'covered' | 'gap'","title":"Coverage"},"description":"filter: 'covered' | 'gap'"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/requirements/coverage":{"get":{"tags":["requirements"],"summary":"Coverage Summary","description":"Coverage for one document: totals by obligation, plus how many requirements\nhave >=1 traceability link (test/validator/run) for this org — the gap view.","operationId":"coverage_summary_requirements_coverage_get","parameters":[{"name":"document_id","in":"query","required":true,"schema":{"type":"integer","title":"Document Id"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/requirements/links":{"get":{"tags":["requirements"],"summary":"List Links","operationId":"list_links_requirements_links_get","parameters":[{"name":"requirement_key","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Requirement Key"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}},"post":{"tags":["requirements"],"summary":"Create Link","operationId":"create_link_requirements_links_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/requirements/links/{link_id}":{"delete":{"tags":["requirements"],"summary":"Delete Link","operationId":"delete_link_requirements_links__link_id__delete","parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"string","title":"Link Id"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/requirements/refine":{"post":{"tags":["requirements"],"summary":"Refine Requirement","description":"LLM refinement: decompose a requirement into atomic condition/action pieces\n(cite-or-abstain — grounded strictly in the source sentence).","operationId":"refine_requirement_requirements_refine_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefineRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/generate/tests":{"post":{"tags":["generation"],"summary":"Generate Tests","description":"Queue a generation job and return immediately. Poll GET /generate/jobs/{id}.","operationId":"generate_tests_generate_tests_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateTestsRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/generate/jobs/{job_id}":{"get":{"tags":["generation"],"summary":"Get Job","operationId":"get_job_generate_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/generate/jobs":{"get":{"tags":["generation"],"summary":"List Jobs","operationId":"list_jobs_generate_jobs_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","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/artifacts":{"get":{"tags":["generation"],"summary":"List Artifacts","operationId":"list_artifacts_artifacts_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"spec","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spec"}},{"name":"review_state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review State"}},{"name":"stale","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stale"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/artifacts/{artifact_id}":{"get":{"tags":["generation"],"summary":"Get Artifact","operationId":"get_artifact_artifacts__artifact_id__get","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}},"delete":{"tags":["generation"],"summary":"Delete Artifact","operationId":"delete_artifact_artifacts__artifact_id__delete","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/artifacts/{artifact_id}/review":{"post":{"tags":["generation"],"summary":"Review Artifact","operationId":"review_artifact_artifacts__artifact_id__review_post","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/specs/versions":{"get":{"tags":["impact"],"summary":"List Versions","operationId":"list_versions_specs_versions_get","parameters":[{"name":"spec_base","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"e.g. '38331'; omit to list all specs with >1 version","title":"Spec Base"},"description":"e.g. '38331'; omit to list all specs with >1 version"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/specs/diff":{"get":{"tags":["impact"],"summary":"Diff Spec Versions","description":"What changed normatively between two documents — two versions of a spec, or an RFC and\nthe RFC that obsoletes it.","operationId":"diff_spec_versions_specs_diff_get","parameters":[{"name":"spec_base","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"e.g. '38331'","title":"Spec Base"},"description":"e.g. '38331'"},{"name":"from_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"e.g. 'j20'","title":"From Version"},"description":"e.g. 'j20'"},{"name":"to_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"e.g. 'j30'","title":"To Version"},"description":"e.g. 'j30'"},{"name":"from_doc","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"document id (unambiguous; use for MPEG/RFC)","title":"From Doc"},"description":"document id (unambiguous; use for MPEG/RFC)"},{"name":"to_doc","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"To Doc"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/specs/timeline":{"get":{"tags":["impact"],"summary":"Spec Timeline","description":"The revision history of a spec: every version, and the normative delta across each\nconsecutive pair. Powers the revision tracker and its hover overlays.\n\nBounded to the newest `limit` versions — MPEG publishes >100 documents for some parts, and\ndiffing every consecutive pair of those on a page load would be absurd. What was dropped is\nreported rather than silently truncated.","operationId":"spec_timeline_specs_timeline_get","parameters":[{"name":"spec_base","in":"query","required":true,"schema":{"type":"string","title":"Spec Base"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":2,"description":"how many of the newest versions to walk","default":10,"title":"Limit"},"description":"how many of the newest versions to walk"},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/specs/impact":{"get":{"tags":["impact"],"summary":"Spec Impact","description":"Blast radius of a version bump: which specs depend on this one, and which of *your*\nartifacts are built on clauses that changed.","operationId":"spec_impact_specs_impact_get","parameters":[{"name":"spec_base","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spec Base"}},{"name":"from_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Version"}},{"name":"to_version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Version"}},{"name":"from_doc","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Doc"}},{"name":"to_doc","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"To Doc"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/artifacts/stale-scan":{"post":{"tags":["impact"],"summary":"Stale Scan","description":"Flag this org's artifacts affected by a spec moving on — a version bump, or an RFC being\nobsoleted by another.\n\nThree outcomes per artifact, and the distinction matters:\n  · the clause was **reworded**  -> stale, and we record where it now lives, so it can be\n    regenerated in one click;\n  · the clause was **removed**   -> stale, and NOT regenerable: there is nothing to write a\n    test against, so we say so instead of inventing a target;\n  · the clause was **carried over** into a new document (only possible across an RFC\n    obsolescence) -> stale only because it now lives in a different RFC; regenerating\n    re-anchors the test to its new home.","operationId":"stale_scan_artifacts_stale_scan_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaleScanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/specs/rfc/{rfc}/lineage":{"get":{"tags":["impact"],"summary":"Rfc Lineage","description":"An RFC's change history. RFCs are immutable — they are never revised, only obsoleted or\nupdated by other RFCs — so this graph, not a version diff, IS their revision history.\n\nReturns the four directions (what it obsoletes/updates, and what obsoletes/updates it) plus\nthis org's tests written against it, so an obsoleted RFC surfaces as work to do.","operationId":"rfc_lineage_specs_rfc__rfc__lineage_get","parameters":[{"name":"rfc","in":"path","required":true,"schema":{"type":"string","title":"Rfc"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/artifacts/{artifact_id}/regenerate":{"post":{"tags":["impact"],"summary":"Regenerate Artifact","description":"Queue a regeneration of a stale artifact against the clause as it now reads.","operationId":"regenerate_artifact_artifacts__artifact_id__regenerate_post","parameters":[{"name":"artifact_id","in":"path","required":true,"schema":{"type":"string","title":"Artifact Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/generate/suite":{"post":{"tags":["impact"],"summary":"Build Cross Spec Suite","description":"Assemble a suite for one procedure across a spec *and the specs it normatively references*,\nthen queue a generation job per requirement.\n\nA procedure like registration is never described in one spec — this is what makes the suite\ncross-spec rather than a per-document filter.","operationId":"build_cross_spec_suite_generate_suite_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuiteRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charting/patents":{"post":{"tags":["charting"],"summary":"Ingest Patent","description":"Ingest patent claim text and parse its claims (R-1 first half).","operationId":"ingest_patent_charting_patents_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestPatent"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charting/patents/fetch":{"post":{"tags":["charting"],"summary":"Fetch Patent Endpoint","description":"Fetch a granted patent OR published application by number, then parse its claims (W-1).\n\nUses the licensed EPO OPS source when configured, else Google Patents (apps + grants, global).\n`kind` reports best-effort grant status; a pending application is a first-class input.","operationId":"fetch_patent_endpoint_charting_patents_fetch_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchPatent"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charting/patents/{patent_id}/claims/{claim_no}/decompose":{"post":{"tags":["charting"],"summary":"Decompose","description":"Decompose a claim into preamble + editable limitations (R-1), persisting the elements.","operationId":"decompose_charting_patents__patent_id__claims__claim_no__decompose_post","parameters":[{"name":"patent_id","in":"path","required":true,"schema":{"type":"string","title":"Patent Id"}},{"name":"claim_no","in":"path","required":true,"schema":{"type":"integer","title":"Claim No"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/charting/patents/{patent_id}/claims/{claim_no}/generate":{"post":{"tags":["charting"],"summary":"Generate","description":"Retrieve + score + verify per element, persisting proposed mappings (verify-first).","operationId":"generate_charting_patents__patent_id__claims__claim_no__generate_post","parameters":[{"name":"patent_id","in":"path","required":true,"schema":{"type":"string","title":"Patent Id"}},{"name":"claim_no","in":"path","required":true,"schema":{"type":"integer","title":"Claim No"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateChart"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charting/patents/{patent_id}":{"get":{"tags":["charting"],"summary":"List Patent","description":"The patent and its parsed claims (for the workspace claim picker).","operationId":"list_patent_charting_patents__patent_id__get","parameters":[{"name":"patent_id","in":"path","required":true,"schema":{"type":"string","title":"Patent Id"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/charting/patents/{patent_id}/claims/{claim_no}":{"get":{"tags":["charting"],"summary":"Get Chart","description":"The full chart for review: every element with its mappings (all statuses).","operationId":"get_chart_charting_patents__patent_id__claims__claim_no__get","parameters":[{"name":"patent_id","in":"path","required":true,"schema":{"type":"string","title":"Patent Id"}},{"name":"claim_no","in":"path","required":true,"schema":{"type":"integer","title":"Claim No"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/charting/mappings/{mapping_id}":{"patch":{"tags":["charting"],"summary":"Review","description":"Accept / reject / edit a mapping (R-7). Records reviewer + timestamp (audit).","operationId":"review_charting_mappings__mapping_id__patch","parameters":[{"name":"mapping_id","in":"path","required":true,"schema":{"type":"string","title":"Mapping Id"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewAction"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charting/patents/{patent_id}/claims/{claim_no}/export":{"get":{"tags":["charting"],"summary":"Export","description":"Export the reviewed chart. fmt = docx (two-column chart + mapping table) | pdf | csv\n(mapping table). Only accepted/edited mappings are included (R-7).","operationId":"export_charting_patents__patent_id__claims__claim_no__export_get","parameters":[{"name":"patent_id","in":"path","required":true,"schema":{"type":"string","title":"Patent Id"}},{"name":"claim_no","in":"path","required":true,"schema":{"type":"integer","title":"Claim No"}},{"name":"fmt","in":"query","required":false,"schema":{"type":"string","default":"docx","title":"Fmt"}},{"name":"chart_type","in":"query","required":false,"schema":{"type":"string","default":"essentiality","title":"Chart Type"}},{"name":"version_pin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Pin"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/register":{"post":{"summary":"Register","operationId":"register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login":{"post":{"summary":"Login","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"summary":"Me","operationId":"me_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/orgs":{"get":{"summary":"List Orgs","operationId":"list_orgs_orgs_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrgOut"},"title":"Response List Orgs Orgs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp/web-token":{"get":{"summary":"Get Mcp Web Token","description":"Return the per-organization MCP web token.\nThis token is used by the portal web server to authenticate MCP calls.","operationId":"get_mcp_web_token_mcp_web_token_get","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/team":{"get":{"summary":"List Team","operationId":"list_team_team_get","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/team/invites":{"post":{"summary":"Create Invite","operationId":"create_invite_team_invites_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/team/invites/{token}/accept":{"post":{"summary":"Accept Invite","operationId":"accept_invite_team_invites__token__accept_post","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"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-keys":{"get":{"summary":"List Keys","operationId":"list_keys_api_keys_get","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyOut"},"title":"Response List Keys Api Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Key","operationId":"create_key_api_keys_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api-keys/{key_id}/revoke":{"post":{"summary":"Revoke Key","operationId":"revoke_key_api_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/usage/ingest":{"post":{"summary":"Ingest Usage","operationId":"ingest_usage_usage_ingest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageIngest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/usage/summary":{"get":{"summary":"Usage Summary","operationId":"usage_summary_usage_summary_get","parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"30d","title":"Range"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UsagePoint"},"title":"Response Usage Summary Usage Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/summary":{"get":{"summary":"Billing Summary","operationId":"billing_summary_billing_summary_get","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/checkout":{"post":{"summary":"Create Checkout","operationId":"create_checkout_billing_checkout_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/change-plan":{"post":{"summary":"Change Plan","operationId":"change_plan_billing_change_plan_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/billing/portal":{"post":{"summary":"Create Billing Portal","operationId":"create_billing_portal_billing_portal_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/billing/cancel":{"post":{"summary":"Cancel Subscription","description":"Cancel the current subscription and revert to trial.","operationId":"cancel_subscription_billing_cancel_post","parameters":[{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-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"}}}}}}},"/billing/webhook":{"post":{"summary":"Stripe Webhook","operationId":"stripe_webhook_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/internal/validate-key":{"post":{"summary":"Validate Api Key","description":"Validate an API key and return org info.\nUsed by MCP server to authenticate incoming requests.","operationId":"validate_api_key_internal_validate_key_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/messages":{"get":{"summary":"List Support Messages","operationId":"list_support_messages_support_messages_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportThreadOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Support Message","operationId":"create_support_message_support_messages_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","title":"Authorization"}},{"name":"X-Org-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Org-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportMessageCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportMessageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/quota/check":{"post":{"summary":"Check Quota","description":"Check if an organization has remaining quota for the current billing period.\nUsed by MCP server before processing searches.","operationId":"check_quota_internal_quota_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaCheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuotaCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AdminLoginPayload":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"AdminLoginPayload"},"ApiKeyCreate":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"ApiKeyCreate"},"ApiKeyOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"prefix":{"type":"string","title":"Prefix"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","name","prefix","created_at"],"title":"ApiKeyOut"},"AuthResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"$ref":"#/components/schemas/UserOut"},"orgs":{"items":{"$ref":"#/components/schemas/OrgOut"},"type":"array","title":"Orgs"}},"type":"object","required":["access_token","user","orgs"],"title":"AuthResponse"},"BatchDeletePayload":{"properties":{"doc_ids":{"items":{"type":"integer"},"type":"array","title":"Doc Ids"}},"type":"object","required":["doc_ids"],"title":"BatchDeletePayload"},"BillingSummary":{"properties":{"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name"},"payment_provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Provider"},"invoices":{"items":{"$ref":"#/components/schemas/InvoiceOut"},"type":"array","title":"Invoices","default":[]}},"type":"object","title":"BillingSummary"},"Body_admin_documents_upload_admin_documents_upload_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"doc_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Type"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["file"],"title":"Body_admin_documents_upload_admin_documents_upload_post"},"ChangePlanRequest":{"properties":{"new_plan":{"type":"string","title":"New Plan"}},"type":"object","required":["new_plan"],"title":"ChangePlanRequest"},"ChangePlanResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"previous_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Plan"},"new_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Plan"},"prorated_amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Prorated Amount"},"effective_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective Date"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["success"],"title":"ChangePlanResponse"},"CheckoutRequest":{"properties":{"plan":{"type":"string","title":"Plan","default":"pro"}},"type":"object","title":"CheckoutRequest"},"FetchPatent":{"properties":{"number":{"type":"string","title":"Number"}},"type":"object","required":["number"],"title":"FetchPatent"},"GenerateChart":{"properties":{"chart_type":{"type":"string","title":"Chart Type","default":"essentiality"},"version_pin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Pin"},"top_k":{"type":"integer","title":"Top K","default":20}},"type":"object","title":"GenerateChart"},"GenerateTestsRequest":{"properties":{"requirement_id":{"type":"integer","title":"Requirement Id"},"target":{"type":"string","title":"Target","default":"pytest"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"}},"type":"object","required":["requirement_id"],"title":"GenerateTestsRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IngestPatent":{"properties":{"text":{"type":"string","title":"Text"},"number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"source":{"type":"string","title":"Source","default":"pasted"}},"type":"object","required":["text"],"title":"IngestPatent"},"InviteCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"type":"string","title":"Role","default":"member"}},"type":"object","required":["email"],"title":"InviteCreate"},"InviteOut":{"properties":{"id":{"type":"integer","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"role":{"type":"string","title":"Role"},"token":{"type":"string","title":"Token"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","role","token","created_at"],"title":"InviteOut"},"InvoiceOut":{"properties":{"invoice_id":{"type":"string","title":"Invoice Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"amount_due":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Due"},"amount_paid":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Paid"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"hosted_invoice_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hosted Invoice Url"},"pdf_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pdf Url"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"}},"type":"object","required":["invoice_id"],"title":"InvoiceOut"},"LinkCreate":{"properties":{"requirement_key":{"type":"string","title":"Requirement Key"},"spec_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spec Number"},"link_type":{"type":"string","title":"Link Type","default":"test"},"target_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Type"},"target_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Id"},"status":{"type":"string","title":"Status","default":"planned"}},"type":"object","required":["requirement_key"],"title":"LinkCreate"},"OrgOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},"type":"object","required":["id","name","slug"],"title":"OrgOut"},"QuotaCheckRequest":{"properties":{"org_id":{"type":"string","title":"Org Id"}},"type":"object","required":["org_id"],"title":"QuotaCheckRequest"},"QuotaCheckResponse":{"properties":{"allowed":{"type":"boolean","title":"Allowed"},"org_id":{"type":"string","title":"Org Id"},"tier":{"type":"string","title":"Tier"},"used":{"type":"integer","title":"Used"},"limit":{"type":"integer","title":"Limit"},"remaining":{"type":"integer","title":"Remaining"},"reset_date":{"type":"string","title":"Reset Date"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["allowed","org_id","tier","used","limit","remaining","reset_date"],"title":"QuotaCheckResponse"},"RefineRequest":{"properties":{"requirement_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requirement Id"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"obligation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Obligation"},"actor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor"},"spec_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spec Number"},"section_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Title"}},"type":"object","title":"RefineRequest"},"ReviewAction":{"properties":{"status":{"type":"string","title":"Status"},"edited_quote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Edited Quote"}},"type":"object","required":["status"],"title":"ReviewAction"},"ReviewRequest":{"properties":{"review_state":{"type":"string","title":"Review State"}},"type":"object","required":["review_state"],"title":"ReviewRequest"},"StaleScanRequest":{"properties":{"spec_base":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spec Base"},"from_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Version"},"to_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Version"},"from_doc":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Doc"},"to_doc":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"To Doc"}},"type":"object","title":"StaleScanRequest"},"SuiteRequest":{"properties":{"spec_base":{"type":"string","title":"Spec Base"},"version_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version Label"},"keyword":{"type":"string","title":"Keyword"},"target":{"type":"string","title":"Target","default":"pytest"},"include_references":{"type":"boolean","title":"Include References","default":true},"max_requirements":{"type":"integer","title":"Max Requirements","default":15}},"type":"object","required":["spec_base","keyword"],"title":"SuiteRequest"},"SupportMessageCreate":{"properties":{"body":{"type":"string","title":"Body"}},"type":"object","required":["body"],"title":"SupportMessageCreate"},"SupportMessageOut":{"properties":{"id":{"type":"integer","title":"Id"},"body":{"type":"string","title":"Body"},"from_staff":{"type":"boolean","title":"From Staff"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","body","from_staff","created_at"],"title":"SupportMessageOut"},"SupportReplyPayload":{"properties":{"body":{"type":"string","title":"Body"},"author_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Author Name","default":"Support"}},"type":"object","required":["body"],"title":"SupportReplyPayload"},"SupportThreadOut":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/SupportMessageOut"},"type":"array","title":"Messages","default":[]}},"type":"object","title":"SupportThreadOut"},"UsageIngest":{"properties":{"metric":{"type":"string","title":"Metric","default":"tool_call"},"count":{"type":"integer","title":"Count","default":1},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route"}},"type":"object","title":"UsageIngest"},"UsagePoint":{"properties":{"date":{"type":"string","title":"Date"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["date","count"],"title":"UsagePoint"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"name":{"type":"string","title":"Name"},"password":{"type":"string","title":"Password"},"org_name":{"type":"string","title":"Org Name"}},"type":"object","required":["email","name","password","org_name"],"title":"UserCreate"},"UserLogin":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"UserLogin"},"UserOut":{"properties":{"id":{"type":"string","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","name","created_at"],"title":"UserOut"},"ValidateKeyRequest":{"properties":{"api_key":{"type":"string","title":"Api Key"}},"type":"object","required":["api_key"],"title":"ValidateKeyRequest"},"ValidateKeyResponse":{"properties":{"valid":{"type":"boolean","title":"Valid"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id"},"org_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Name"},"tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tier"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["valid"],"title":"ValidateKeyResponse"},"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"}}}}