{"openapi":"3.1.0","info":{"title":"OMADS GUI","version":"0.1.0"},"paths":{"/":{"get":{"summary":"Index","description":"Serve the frontend.","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/settings":{"get":{"summary":"Get Settings","operationId":"get_settings_api_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Update Settings","operationId":"update_settings_api_settings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSettingsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/session-settings":{"get":{"summary":"Get Session Settings","description":"Return the runtime settings snapshot for one browser session when available.","operationId":"get_session_settings_api_session_settings_get","parameters":[{"name":"client_session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/network-info":{"get":{"summary":"Get Network Info","description":"Return the detected LAN IP, port, QR code image, and current LAN access state.","operationId":"get_network_info_api_network_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/diff":{"get":{"summary":"Get Repo Diff","description":"Return a unified Git diff for the active project.","operationId":"get_repo_diff_api_diff_get","parameters":[{"name":"client_session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/browse":{"get":{"summary":"Browse Directory","description":"List subdirectories for the folder picker.","operationId":"browse_directory_api_browse_get","parameters":[{"name":"path","in":"query","required":false,"schema":{"type":"string","default":"~","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects":{"get":{"summary":"List Projects","description":"List all registered projects.","operationId":"list_projects_api_projects_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Create Project","description":"Create a new project.","operationId":"create_project_api_projects_post","parameters":[{"name":"client_session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/switch":{"post":{"summary":"Switch Project","description":"Switch to the requested project.","operationId":"switch_project_api_projects_switch_post","parameters":[{"name":"client_session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwitchProjectRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}":{"delete":{"summary":"Delete Project","description":"Remove a project from the registry while keeping its files.","operationId":"delete_project_api_projects__project_id__delete","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/clear-context":{"post":{"summary":"Clear Project Context","description":"Clear the conversation history / timeline for one project.","operationId":"clear_project_context_api_projects__project_id__clear_context_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/history":{"get":{"summary":"Get Project History","description":"Return the full history for one project.","operationId":"get_project_history_api_projects__project_id__history_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/logs":{"get":{"summary":"Get Project Logs","description":"Return the log entries for one project.","operationId":"get_project_logs_api_projects__project_id__logs_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/projects/{project_id}/timeline":{"get":{"summary":"Get Project Timeline","description":"Return one bounded page from the unified event timeline for one project.","operationId":"get_project_timeline_api_projects__project_id__timeline_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Before"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/health":{"get":{"summary":"Get Health","description":"Check whether Claude Code CLI and Codex CLI are available.","operationId":"get_health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/status":{"get":{"summary":"Get Status","description":"Return OMADS system status.","operationId":"get_status_api_status_get","parameters":[{"name":"client_session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ledger":{"get":{"summary":"Get Ledger","description":"Return the latest 20 ledger entries.","operationId":"get_ledger_api_ledger_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/github/auth/connect":{"post":{"summary":"Github Auth Connect","description":"Connect to GitHub with a Personal Access Token (fallback).","operationId":"github_auth_connect_api_github_auth_connect_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/github/auth/device/start":{"post":{"summary":"Github Auth Device Start","description":"Start the GitHub OAuth Device Flow.","operationId":"github_auth_device_start_api_github_auth_device_start_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/github/auth/device/poll":{"post":{"summary":"Github Auth Device Poll","description":"Poll for GitHub OAuth Device Flow completion.","operationId":"github_auth_device_poll_api_github_auth_device_poll_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/github/auth":{"delete":{"summary":"Github Auth Disconnect","description":"Disconnect from GitHub (delete stored token).","operationId":"github_auth_disconnect_api_github_auth_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/github/auth/status":{"get":{"summary":"Github Auth Status","description":"Return current GitHub auth status (no token exposed).","operationId":"github_auth_status_api_github_auth_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/github/repos":{"get":{"summary":"Github List Repos","description":"List the authenticated user's GitHub repos with optional search.","operationId":"github_list_repos_api_github_repos_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Per Page"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","default":"","title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/github/repos/create":{"post":{"summary":"Github Create Repo","description":"Create a new GitHub repository.","operationId":"github_create_repo_api_github_repos_create_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Data"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/github/repos/info":{"get":{"summary":"Github Repo Info","description":"Get info about any GitHub repo (for review of foreign repos).","operationId":"github_repo_info_api_github_repos_info_get","parameters":[{"name":"full_name","in":"query","required":true,"schema":{"type":"string","title":"Full Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/github/clone":{"post":{"summary":"Github Clone Repo","description":"Clone a GitHub repo and register it as an OMADS project.","operationId":"github_clone_repo_api_github_clone_post","parameters":[{"name":"client_session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitHubCloneRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/github/git":{"post":{"summary":"Github Git Operation","description":"Run a Git operation (status, commit, push, pull) on a repo.","operationId":"github_git_operation_api_github_git_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GitHubGitRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CreateProjectRequest":{"properties":{"name":{"type":"string","title":"Name","default":""},"path":{"type":"string","title":"Path","default":""}},"type":"object","title":"CreateProjectRequest"},"GitHubCloneRequest":{"properties":{"full_name":{"type":"string","title":"Full Name","default":""},"target_dir":{"type":"string","title":"Target Dir","default":""}},"type":"object","title":"GitHubCloneRequest"},"GitHubGitRequest":{"properties":{"repo_path":{"type":"string","title":"Repo Path","default":""},"operation":{"type":"string","title":"Operation","default":""},"message":{"type":"string","title":"Message","default":""}},"type":"object","title":"GitHubGitRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"SwitchProjectRequest":{"properties":{"id":{"type":"string","title":"Id","default":""}},"type":"object","title":"SwitchProjectRequest"},"UpdateSettingsRequest":{"properties":{"target_repo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Repo"},"builder_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Builder Agent"},"review_first_reviewer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review First Reviewer"},"review_second_reviewer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Second Reviewer"},"claude_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claude Model"},"claude_permission_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claude Permission Mode"},"claude_effort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Claude Effort"},"codex_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codex Model"},"codex_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codex Reasoning"},"codex_fast":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Codex Fast"},"codex_execution_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Codex Execution Mode"},"auto_review":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Review"},"ui_theme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ui Theme"},"lan_access":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Lan Access"}},"type":"object","title":"UpdateSettingsRequest"},"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"}}}}