{"openapi":"3.1.0","info":{"title":"final_app backend","version":"0.1.0"},"paths":{"/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_auth_logout_post","parameters":[{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Logout Auth Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/logout-all":{"post":{"tags":["auth"],"summary":"Logout All","description":"Revoke EVERY session for the current user (e.g. after a suspected\ncompromise), then clear this browser's cookie.","operationId":"logout_all_auth_logout_all_post","parameters":[{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Logout All Auth Logout All Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/me":{"get":{"tags":["auth"],"summary":"Me","operationId":"me_auth_me_get","parameters":[{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"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"}}}}}}},"/auth/google/login":{"get":{"tags":["auth"],"summary":"Google Login","operationId":"google_login_auth_google_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/google/callback":{"get":{"tags":["auth"],"summary":"Google Callback","operationId":"google_callback_auth_google_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces":{"get":{"tags":["workspaces"],"summary":"List Workspaces","operationId":"list_workspaces_workspaces_get","parameters":[{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceOut"},"title":"Response List Workspaces Workspaces Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workspaces"],"summary":"Create Workspace","operationId":"create_workspace_workspaces_post","parameters":[{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}":{"get":{"tags":["workspaces"],"summary":"Get Workspace","operationId":"get_workspace_workspaces__workspace_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workspaces"],"summary":"Rename Workspace","operationId":"rename_workspace_workspaces__workspace_id__patch","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspaces"],"summary":"Delete Workspace","operationId":"delete_workspace_workspaces__workspace_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/members":{"get":{"tags":["workspaces"],"summary":"List Members","operationId":"list_members_workspaces__workspace_id__members_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MemberOut"},"title":"Response List Members Workspaces  Workspace Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workspaces"],"summary":"Add Member","operationId":"add_member_workspaces__workspace_id__members_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberAdd"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/members/{member_user_id}":{"delete":{"tags":["workspaces"],"summary":"Remove Member","operationId":"remove_member_workspaces__workspace_id__members__member_user_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"member_user_id","in":"path","required":true,"schema":{"type":"string","title":"Member User Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/studies":{"get":{"tags":["studies"],"summary":"List Studies","operationId":"list_studies_workspaces__workspace_id__studies_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StudyOut"},"title":"Response List Studies Workspaces  Workspace Id  Studies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["studies"],"summary":"Create Study","operationId":"create_study_workspaces__workspace_id__studies_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/studies/{study_id}":{"get":{"tags":["studies"],"summary":"Get Study","operationId":"get_study_workspaces__workspace_id__studies__study_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StudyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["studies"],"summary":"Delete Study","operationId":"delete_study_workspaces__workspace_id__studies__study_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/studies/{study_id}/versions":{"get":{"tags":["studies"],"summary":"List Versions","operationId":"list_versions_workspaces__workspace_id__studies__study_id__versions_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/VersionOut"},"title":"Response List Versions Workspaces  Workspace Id  Studies  Study Id  Versions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["studies"],"summary":"Create Version","operationId":"create_version_workspaces__workspace_id__studies__study_id__versions_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/studies/{study_id}/versions/{version_id}":{"put":{"tags":["studies"],"summary":"Update Version","description":"Update a saved version in place (rename and/or replace its data) so the\npanel's 'Save' can overwrite the active version instead of only ever\ncreating new ones.","operationId":"update_version_workspaces__workspace_id__studies__study_id__versions__version_id__put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["studies"],"summary":"Delete Version","operationId":"delete_version_workspaces__workspace_id__studies__study_id__versions__version_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"string","title":"Version Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/studies/{study_id}/scenarios":{"get":{"tags":["studies"],"summary":"List Scenarios","operationId":"list_scenarios_workspaces__workspace_id__studies__study_id__scenarios_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioOut"},"title":"Response List Scenarios Workspaces  Workspace Id  Studies  Study Id  Scenarios Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["studies"],"summary":"Create Scenario","operationId":"create_scenario_workspaces__workspace_id__studies__study_id__scenarios_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/studies/{study_id}/scenarios/{scenario_id}":{"put":{"tags":["studies"],"summary":"Update Scenario","operationId":"update_scenario_workspaces__workspace_id__studies__study_id__scenarios__scenario_id__put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["studies"],"summary":"Delete Scenario","operationId":"delete_scenario_workspaces__workspace_id__studies__study_id__scenarios__scenario_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/studies/{study_id}/scenarios/{scenario_id}/duplicate":{"post":{"tags":["studies"],"summary":"Duplicate Scenario","description":"Copy a scenario (optionally renamed). This is the seam the future\n'create scenario 2 like scenario 1 but €100 deductible' agent will drive:\nduplicate, then patch the copy's slot JSON.","operationId":"duplicate_scenario_workspaces__workspace_id__studies__study_id__scenarios__scenario_id__duplicate_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioUpdate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/studies/{study_id}/runs":{"get":{"tags":["studies"],"summary":"List Runs","operationId":"list_runs_workspaces__workspace_id__studies__study_id__runs_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__routers__studies__RunOut"},"title":"Response List Runs Workspaces  Workspace Id  Studies  Study Id  Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["studies"],"summary":"Create Run","operationId":"create_run_workspaces__workspace_id__studies__study_id__runs_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__studies__RunOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/studies/{study_id}/runs/{run_id}":{"delete":{"tags":["studies"],"summary":"Delete Run","operationId":"delete_run_workspaces__workspace_id__studies__study_id__runs__run_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"path","required":true,"schema":{"type":"string","title":"Study Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/models":{"get":{"tags":["models"],"summary":"Models","operationId":"models_models_get","parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Models Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/models/{model_id}/schema":{"get":{"tags":["models"],"summary":"Model Schema","operationId":"model_schema_models__model_id__schema_get","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Model Schema Models  Model Id  Schema Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/models":{"get":{"tags":["admin"],"summary":"Admin Models","description":"All engine models with their active flag (operator-only).","operationId":"admin_models_admin_models_get","parameters":[{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Admin Models Admin Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/models/{model_id}":{"put":{"tags":["admin"],"summary":"Set Model Active","operationId":"set_model_active_admin_models__model_id__put","parameters":[{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelToggle"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Model Active Admin Models  Model Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/workspaces/{workspace_id}/models":{"get":{"tags":["admin"],"summary":"Admin Workspace Models","description":"Globally-active models with their per-workspace active flag (operator-only).\n\nOnly models that are active globally can be offered in a workspace; a model\ndeactivated globally is dropped here entirely.","operationId":"admin_workspace_models_admin_workspaces__workspace_id__models_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/workspaces/{workspace_id}/models/{model_id}":{"put":{"tags":["admin"],"summary":"Set Workspace Model Active","operationId":"set_workspace_model_active_admin_workspaces__workspace_id__models__model_id__put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"model_id","in":"path","required":true,"schema":{"type":"string","title":"Model Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelToggle"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Workspace Model Active Admin Workspaces  Workspace Id  Models  Model Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/buildings/lookup":{"get":{"tags":["buildings"],"summary":"Lookup","description":"Return BDNB attributes for the footprint at (lng, lat), or {found:false}.","operationId":"lookup_buildings_lookup_get","parameters":[{"name":"lng","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lng"}},{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Lookup Buildings Lookup Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora":{"get":{"tags":["documents"],"summary":"List Corpora","operationId":"list_corpora_workspaces__workspace_id__corpora_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CorpusOut"},"title":"Response List Corpora Workspaces  Workspace Id  Corpora Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["documents"],"summary":"Create Corpus","operationId":"create_corpus_workspaces__workspace_id__corpora_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCorpusIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorpusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}":{"delete":{"tags":["documents"],"summary":"Delete Corpus","operationId":"delete_corpus_workspaces__workspace_id__corpora__corpus_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/status":{"get":{"tags":["documents"],"summary":"Get Status","operationId":"get_status_workspaces__workspace_id__corpora__corpus_id__status_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorpusStatusOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/cli-token":{"post":{"tags":["documents"],"summary":"Mint Cli Token","operationId":"mint_cli_token_workspaces__workspace_id__corpora__corpus_id__cli_token_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CliTokenIn"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliTokenOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/cli-tokens":{"get":{"tags":["documents"],"summary":"List Cli Tokens","description":"Active (non-revoked) CLI tokens minted for this corpus, for the corpus\nsettings page. The raw token is never stored, so only metadata is shown.","operationId":"list_cli_tokens_workspaces__workspace_id__corpora__corpus_id__cli_tokens_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CliTokenSummary"},"title":"Response List Cli Tokens Workspaces  Workspace Id  Corpora  Corpus Id  Cli Tokens Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/cli-tokens/{ledger_id}":{"delete":{"tags":["documents"],"summary":"Revoke Cli Token","description":"Revoke a minted CLI token. Owners may revoke any token for the corpus;\na member may revoke a token they minted themselves.","operationId":"revoke_cli_token_workspaces__workspace_id__corpora__corpus_id__cli_tokens__ledger_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"ledger_id","in":"path","required":true,"schema":{"type":"string","title":"Ledger Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Revoke Cli Token Workspaces  Workspace Id  Corpora  Corpus Id  Cli Tokens  Ledger Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/documents":{"get":{"tags":["documents"],"summary":"List Documents","operationId":"list_documents_workspaces__workspace_id__corpora__corpus_id__documents_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DocumentOut"},"title":"Response List Documents Workspaces  Workspace Id  Corpora  Corpus Id  Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["documents"],"summary":"Upload Documents","description":"Forward a single multipart file to sagalog's HTTP ingest API.","operationId":"upload_documents_workspaces__workspace_id__corpora__corpus_id__documents_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_documents_workspaces__workspace_id__corpora__corpus_id__documents_post"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentUploadOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/documents/{doc_id}/markdown":{"get":{"tags":["documents"],"summary":"Get Markdown","operationId":"get_markdown_workspaces__workspace_id__corpora__corpus_id__documents__doc_id__markdown_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/documents/{doc_id}/chunks":{"get":{"tags":["documents"],"summary":"List Document Chunks","operationId":"list_document_chunks_workspaces__workspace_id__corpora__corpus_id__documents__doc_id__chunks_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DocumentChunkOut"},"title":"Response List Document Chunks Workspaces  Workspace Id  Corpora  Corpus Id  Documents  Doc Id  Chunks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/documents/{doc_id}/raw":{"get":{"tags":["documents"],"summary":"Get Document Raw","operationId":"get_document_raw_workspaces__workspace_id__corpora__corpus_id__documents__doc_id__raw_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"doc_id","in":"path","required":true,"schema":{"type":"string","title":"Doc Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/ingest/{job_id}":{"get":{"tags":["documents"],"summary":"Get Ingest Job Route","description":"Proxy to sagalog's ingest poll endpoint.","operationId":"get_ingest_job_route_workspaces__workspace_id__corpora__corpus_id__ingest__job_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestJobOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/tokens":{"get":{"tags":["documents"],"summary":"Operator List Tokens","operationId":"operator_list_tokens_workspaces__workspace_id__corpora__corpus_id__tokens_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Operator List Tokens Workspaces  Workspace Id  Corpora  Corpus Id  Tokens Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/tokens/rotate":{"post":{"tags":["documents"],"summary":"Operator Rotate","operationId":"operator_rotate_workspaces__workspace_id__corpora__corpus_id__tokens_rotate_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Operator Rotate Workspaces  Workspace Id  Corpora  Corpus Id  Tokens Rotate Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/tokens/{token_id}":{"delete":{"tags":["documents"],"summary":"Operator Revoke","operationId":"operator_revoke_workspaces__workspace_id__corpora__corpus_id__tokens__token_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"token_id","in":"path","required":true,"schema":{"type":"string","title":"Token Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Operator Revoke Workspaces  Workspace Id  Corpora  Corpus Id  Tokens  Token Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/runs":{"get":{"tags":["mjolnir-runs"],"summary":"List Runs","description":"Dashboard / study-page listing (design.md §4.4): one indexed query over\nthe pointer cache, never a bucket scan. Optional study/corpus/status filters.","operationId":"list_runs_workspaces__workspace_id__runs_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"study_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Study Id"}},{"name":"corpus_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Corpus Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__routers__mjolnir_runs__RunOut"},"title":"Response List Runs Workspaces  Workspace Id  Runs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/runs/sync":{"post":{"tags":["mjolnir-runs"],"summary":"Sync Runs","description":"Rebuild the pointer cache for a corpus from the bucket (the rebuildable\nrule in action). Workspace-owner or operator only (a full bucket walk).","operationId":"sync_runs_workspaces__workspace_id__corpora__corpus_id__runs_sync_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__routers__mjolnir_runs__RunOut"},"title":"Response Sync Runs Workspaces  Workspace Id  Corpora  Corpus Id  Runs Sync Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/runs/{run_id}/stages/{stage}/resolved":{"get":{"tags":["mjolnir-runs"],"summary":"Read Resolved","description":"Live resolved view (design.md §5.3): computed on read from the bucket,\nnothing stored. Reads never touch the cache.","operationId":"read_resolved_workspaces__workspace_id__corpora__corpus_id__runs__run_id__stages__stage__resolved_get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"stage","in":"path","required":true,"schema":{"type":"string","title":"Stage"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/runs/{run_id}/stages/{stage}/corrections":{"post":{"tags":["mjolnir-runs"],"summary":"Append Correction","description":"Append an append-only correction event (design.md §5.4). The server mints\nthe correction ``id`` (uuid4, id-keyed -> race-free) and ``created_at`` (one\nserver-side source, not per-replica); ``actor`` is the authenticated user.\nCorrections never write the cache — truth is the bucket.","operationId":"append_correction_workspaces__workspace_id__corpora__corpus_id__runs__run_id__stages__stage__corrections_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"stage","in":"path","required":true,"schema":{"type":"string","title":"Stage"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorrectionIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorrectionCreatedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/corpora/{corpus_id}/runs/{run_id}/stages/{stage}/accept":{"post":{"tags":["mjolnir-runs"],"summary":"Accept Run","description":"Accept a run/stage (design.md §8 accept safety).\n\nSerialized across replicas by a **per-run Postgres advisory lock** (the\nPRIMARY serializer) held for the whole accept; on SQLite dev the lock is\nskipped (single process, and ``accept_run``'s ``put_if_absent`` bucket guard\nsuffices). ``accept_run`` itself RECOMPUTES ``resolve()`` from the bucket and\nrefuses on conflicts — the cached ``has_conflicts`` flag is never trusted.\nThe cache row is refreshed only AFTER a successful (or already-committed)\naccept, purely for fast listing.","operationId":"accept_run_workspaces__workspace_id__corpora__corpus_id__runs__run_id__stages__stage__accept_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","title":"Corpus Id"}},{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}},{"name":"stage","in":"path","required":true,"schema":{"type":"string","title":"Stage"}},{"name":"__Host-final_app_session","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"  Host-Final App Session"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptOut"}}}},"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":{}}}}}}}},"components":{"schemas":{"AcceptOut":{"properties":{"run_id":{"type":"string","title":"Run Id"},"stage":{"type":"string","title":"Stage"},"status":{"type":"string","title":"Status"},"accepted_row_count":{"type":"integer","title":"Accepted Row Count"},"accepted_at":{"type":"string","format":"date-time","title":"Accepted At"}},"type":"object","required":["run_id","stage","status","accepted_row_count","accepted_at"],"title":"AcceptOut"},"Body_upload_documents_workspaces__workspace_id__corpora__corpus_id__documents_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_documents_workspaces__workspace_id__corpora__corpus_id__documents_post"},"CliTokenIn":{"properties":{"scope":{"type":"string","enum":["read","write"],"title":"Scope","default":"read"}},"type":"object","title":"CliTokenIn"},"CliTokenOut":{"properties":{"corpus_id":{"type":"string","title":"Corpus Id"},"token":{"type":"string","title":"Token"},"server_url":{"type":"string","title":"Server Url"},"scope":{"type":"string","title":"Scope","default":"read"}},"type":"object","required":["corpus_id","token","server_url"],"title":"CliTokenOut"},"CliTokenSummary":{"properties":{"id":{"type":"string","title":"Id"},"scope":{"type":"string","title":"Scope"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"created_by":{"type":"string","title":"Created By"}},"type":"object","required":["id","scope","created_at","created_by"],"title":"CliTokenSummary","description":"Metadata for an active minted CLI token (raw token never stored)."},"CorpusOut":{"properties":{"corpus_id":{"type":"string","title":"Corpus Id"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["corpus_id","name","created_at"],"title":"CorpusOut"},"CorpusStatusOut":{"properties":{"doc_count":{"type":"integer","title":"Doc Count"},"chunk_count":{"type":"integer","title":"Chunk Count"}},"type":"object","required":["doc_count","chunk_count"],"title":"CorpusStatusOut"},"CorrectionBasisIn":{"properties":{"sagalog_sha":{"type":"string","title":"Sagalog Sha"},"doc_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Id"},"chunk_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chunk Id"},"char_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Char Start"},"char_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Char End"}},"type":"object","required":["sagalog_sha"],"title":"CorrectionBasisIn"},"CorrectionCreatedOut":{"properties":{"correction_id":{"type":"string","title":"Correction Id"},"newly_written":{"type":"boolean","title":"Newly Written"}},"type":"object","required":["correction_id","newly_written"],"title":"CorrectionCreatedOut"},"CorrectionIn":{"properties":{"logical_key":{"type":"string","title":"Logical Key"},"op":{"type":"string","title":"Op"},"path":{"type":"string","title":"Path"},"old_value":{"title":"Old Value"},"new_value":{"title":"New Value"},"reason":{"type":"string","title":"Reason","default":""},"row_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Row Id"},"basis":{"anyOf":[{"$ref":"#/components/schemas/CorrectionBasisIn"},{"type":"null"}]}},"type":"object","required":["logical_key","op","path"],"title":"CorrectionIn"},"CreateCorpusIn":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"CreateCorpusIn"},"DocumentChunkOut":{"properties":{"id":{"type":"string","title":"Id"},"document_id":{"type":"string","title":"Document Id"},"corpus_id":{"type":"string","title":"Corpus Id"},"chunk_index":{"type":"integer","title":"Chunk Index"},"text":{"type":"string","title":"Text"},"context_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context Prefix"},"section_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Section Title"},"page_start":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Start"},"page_end":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page End"},"token_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Token Count"},"bbox":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Bbox"}},"type":"object","required":["id","document_id","corpus_id","chunk_index","text"],"title":"DocumentChunkOut","description":"Product-shaped chunk, mirroring the sagalog DocumentChunk client model."},"DocumentOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size Bytes"},"modified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Modified At"}},"type":"object","required":["id","name"],"title":"DocumentOut"},"DocumentUploadOut":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["job_id","status"],"title":"DocumentUploadOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IngestJobOut":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"doc_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Id"},"filename":{"type":"string","title":"Filename","default":""},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["job_id","status"],"title":"IngestJobOut"},"MemberAdd":{"properties":{"email":{"type":"string","title":"Email"},"role":{"type":"string","title":"Role","default":"member"}},"type":"object","required":["email"],"title":"MemberAdd"},"MemberOut":{"properties":{"user_id":{"type":"string","title":"User Id"},"email":{"type":"string","title":"Email"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"}},"type":"object","required":["user_id","email","name","role"],"title":"MemberOut"},"ModelToggle":{"properties":{"active":{"type":"boolean","title":"Active"}},"type":"object","required":["active"],"title":"ModelToggle"},"ResolvedOut":{"properties":{"run_id":{"type":"string","title":"Run Id"},"stage":{"type":"string","title":"Stage"},"has_conflicts":{"type":"boolean","title":"Has Conflicts"},"rows":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Rows"},"outcomes":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Outcomes"}},"type":"object","required":["run_id","stage","has_conflicts","rows","outcomes"],"title":"ResolvedOut"},"RunCreate":{"properties":{"label":{"type":"string","title":"Label","default":""},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id"}},"type":"object","title":"RunCreate"},"ScenarioCreate":{"properties":{"name":{"type":"string","title":"Name"},"exposure_json":{"additionalProperties":true,"type":"object","title":"Exposure Json","default":{}},"prevention_json":{"additionalProperties":true,"type":"object","title":"Prevention Json","default":{}},"historical_json":{"additionalProperties":true,"type":"object","title":"Historical Json","default":{}},"settings_json":{"additionalProperties":true,"type":"object","title":"Settings Json","default":{}},"policy_json":{"additionalProperties":true,"type":"object","title":"Policy Json","default":{}}},"type":"object","required":["name"],"title":"ScenarioCreate"},"ScenarioOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"exposure_json":{"additionalProperties":true,"type":"object","title":"Exposure Json"},"prevention_json":{"additionalProperties":true,"type":"object","title":"Prevention Json"},"historical_json":{"additionalProperties":true,"type":"object","title":"Historical Json"},"settings_json":{"additionalProperties":true,"type":"object","title":"Settings Json"},"policy_json":{"additionalProperties":true,"type":"object","title":"Policy Json"},"raw_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Run Id"},"insured_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insured Run Id"}},"type":"object","required":["id","name","exposure_json","prevention_json","historical_json","settings_json","policy_json"],"title":"ScenarioOut"},"ScenarioUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"exposure_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Exposure Json"},"prevention_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prevention Json"},"historical_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Historical Json"},"settings_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings Json"},"policy_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Policy Json"}},"type":"object","title":"ScenarioUpdate"},"StudyCreate":{"properties":{"model_id":{"type":"string","title":"Model Id"},"label":{"type":"string","title":"Label","default":""}},"type":"object","required":["model_id"],"title":"StudyCreate"},"StudyOut":{"properties":{"id":{"type":"string","title":"Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"model_id":{"type":"string","title":"Model Id"},"label":{"type":"string","title":"Label"}},"type":"object","required":["id","workspace_id","model_id","label"],"title":"StudyOut"},"UserOut":{"properties":{"id":{"type":"string","title":"Id"},"email":{"type":"string","title":"Email"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"}},"type":"object","required":["id","email","name","role"],"title":"UserOut"},"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"},"VersionCreate":{"properties":{"slot":{"type":"string","title":"Slot"},"name":{"type":"string","title":"Name"},"data_json":{"additionalProperties":true,"type":"object","title":"Data Json","default":{}}},"type":"object","required":["slot","name"],"title":"VersionCreate"},"VersionOut":{"properties":{"id":{"type":"string","title":"Id"},"slot":{"type":"string","title":"Slot"},"name":{"type":"string","title":"Name"},"data_json":{"additionalProperties":true,"type":"object","title":"Data Json"}},"type":"object","required":["id","slot","name","data_json"],"title":"VersionOut"},"VersionUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"data_json":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data Json"}},"type":"object","title":"VersionUpdate"},"WorkspaceCreate":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"WorkspaceCreate"},"WorkspaceOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"role":{"type":"string","title":"Role"}},"type":"object","required":["id","name","role"],"title":"WorkspaceOut"},"WorkspaceUpdate":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"WorkspaceUpdate"},"app__routers__mjolnir_runs__RunOut":{"properties":{"run_id":{"type":"string","title":"Run Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"study_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Study Id"},"corpus_id":{"type":"string","title":"Corpus Id"},"bucket_prefix":{"type":"string","title":"Bucket Prefix"},"stage":{"type":"string","title":"Stage"},"status":{"type":"string","title":"Status"},"has_conflicts":{"type":"boolean","title":"Has Conflicts"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"accepted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Accepted At"}},"type":"object","required":["run_id","workspace_id","study_id","corpus_id","bucket_prefix","stage","status","has_conflicts","created_at","accepted_at"],"title":"RunOut"},"app__routers__studies__RunOut":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"status":{"type":"string","title":"Status"},"scenario_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scenario Id"},"scenario_name":{"type":"string","title":"Scenario Name"},"raw_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Raw Run Id"},"insured_run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Insured Run Id"},"results_json":{"additionalProperties":true,"type":"object","title":"Results Json"}},"type":"object","required":["id","label","status","scenario_id","scenario_name","raw_run_id","insured_run_id","results_json"],"title":"RunOut"}}}}